2018-03-21  Jon Davis  <jond@apple.com>

        Add support for an overridable byline in blog posts
        https://bugs.webkit.org/show_bug.cgi?id=183799

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/functions.php:

2018-02-20  Jon Davis  <jond@apple.com>

        Add widescreen layout class for the Downloads page
        https://bugs.webkit.org/show_bug.cgi?id=182948

        Reviewed by Alexey Proskuryakov.

        * wp-content/themes/webkit/downloads.php: Added .widescreen for full-width layout.

2018-02-13  Jon Davis  <jond@apple.com>

        Added a redirect for /nightly to /downloads/.
        https://bugs.webkit.org/show_bug.cgi?id=182743
        <rdar://problem/35126697>

        Reviewed by Lucas Forschler.

        * .htaccess:

2018-01-24  Aakash Jain  <aakash_jain@apple.com>

        Update code style guidelines for Python
        https://bugs.webkit.org/show_bug.cgi?id=179387

        Rubber-stamped by Alexey Proskuryakov.

        * code-style.md:

2017-12-11  Dean Jackson  <dino@apple.com>

        Add a runtime feature flag for ImageBitmap and OffscreenCanvas
        https://bugs.webkit.org/show_bug.cgi?id=180652
        <rdar://problem/35969611>

        Reviewed by Antoine Quint.

        Simple test to validate if these interfaces are enabled.

        * experimental-features.html:

2017-11-28  Dean Jackson  <dino@apple.com>

        Include gl-matrix directly since github doesn't serve the correct mime type
        https://bugs.webkit.org/show_bug.cgi?id=180102
        <rdar://problem/35301622>

        Reviewed by Antoine Quint.

        * demos/webgpu/cubes.html:
        * demos/webgpu/gl-matrix-min.js: Added.
        * demos/webgpu/simple.html:

2017-11-13  Jon Davis  <jond@apple.com>

        Update safe area CSS for webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=179615

        Reviewed by Alexey Proskuryakov.

        * wp-content/themes/webkit/style.css:
        (@media only screen and (max-height: 415px)):
        (@supports(padding:max(0px))):

2017-11-13  Jon Davis  <jond@apple.com>

        Add a new landing page design and site-wide design detail updates for webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=179558

        Reviewed by Alexey Proskuryakov.

        * wp-content/themes/webkit/404.php: Removed unnecessary prefixed CSS.
        * wp-content/themes/webkit/444.php: Removed unnecessary prefixed CSS.
        * wp-content/themes/webkit/css-status.php: Removed unnecessary prefixed CSS.
        * wp-content/themes/webkit/footer.php: Added new page wrapper container.
        * wp-content/themes/webkit/front-header.php: Redesigned landing hero.
        * wp-content/themes/webkit/functions.php: Added support for configurable non-breaking words.
        * wp-content/themes/webkit/header.php: Added viewport-fit, changed web font, changed logo title.
        * wp-content/themes/webkit/images/chevron.svg: Added.
        * wp-content/themes/webkit/images/circular.svg: Added.
        * wp-content/themes/webkit/images/compass.svg: Added.
        * wp-content/themes/webkit/images/download-white.svg: Added.
        * wp-content/themes/webkit/images/template.svg: Added.
        * wp-content/themes/webkit/loop.php: Updated "read more" link presentation.
        * wp-content/themes/webkit/nightly-start.php: Adjusted header background colors.
        * wp-content/themes/webkit/nightly-survey.php: Adjusted header background colors.
        * wp-content/themes/webkit/nightly.php: Adjusted header background colors.
        * wp-content/themes/webkit/page.php: Page clean up.
        * wp-content/themes/webkit/single.php: Updated "read more" link presentation.
        * wp-content/themes/webkit/status.php: Removed unnecessary prefixed CSS, improved page title.
        * wp-content/themes/webkit/style.css: Redesigned.
        (html):
        (body):
        (strong):
        (em):
        (code):
        (main):
        (h1,):
        (input[type=text]):
        (input[type=submit]):
        (header):
        (.home header):
        (@supports ( -webkit-backdrop-filter: blur(10px) )):
        (.sub-menu-layer):
        (.nextrouter .link,):
        (.pagination):
        (.pagination::after):
        (.pagination .page-numbers):
        (.pagination .dots,):
        (.pagination .next-button):
        (.nextrouter):
        (.nextrouter:hover):
        (.nextrouter.previous):
        (.nextrouter.previous:hover):
        (.nextrouter .bodycopy):
        (.nextrouter a):
        (.nextrouter a:hover):
        (.nextrouter-copy):
        (.nextrouter .label):
        (.nextrouter .title):
        (.nextrouter .link):
        (.nextrouter a:hover .link):
        (footer):
        (.tiles):
        (.tile):
        (.third-tile):
        (.two-thirds-tile):
        (.tile .background-image):
        (.tile .background-image.has-featured-image):
        (.tile .featured-image):
        (.tile:not(.has-post-thumbnail) .background-image,):
        (.tile h1):
        (.tile h2):
        (.tile .summary,):
        (pre):
        (article):
        (article::after):
        (article h1):
        (article h2):
        (article h3):
        (article h4):
        (article h5):
        (article h6):
        (article h2 + h3,):
        (article figcaption):
        (article figcaption::before):
        (.table-of-contents):
        (article .table-of-contents label):
        (.table-of-contents ul):
        (.table-of-contents ul li):
        (.table-of-contents ul li > ul):
        (.site-logo):
        (footer nav):
        (header nav li):
        (header nav a,):
        (header .menu-item-has-children .label-toggle::after):
        (header .menu-item):
        (@media only screen and (max-width: 1180px)):
        (article .byline):
        (@media only screen and (max-width: 920px)):
        (.main-menu.label-toggle):
        (header .menu):
        (header nav a):
        (header .menu-main-menu-container >  ul > li):
        (header .sub-menu-layer):
        (@media only screen and (max-width: 690px)):
        (.third-tile,):
        (@media only screen and (max-width: 600px)):
        (.table-of-contents label:after):
        (@media only screen and (max-width: 415px)):
        (@media only screen and (max-height: 415px)):
        (@supports(padding:max(0px))):
        (header .menu .menu-item > .sub-menu):
        (.sub-menu-layer .menu-item:first-child,):
        (#template):
        (#compass):
        (.tile .featured-image,): Deleted.
        (.site-logo .tagline): Deleted.
        (.timeline): Deleted.
        (.timeline:after): Deleted.
        (.timeline *): Deleted.
        (.timeline:before): Deleted.
        (.timeline > li): Deleted.
        (.timeline > li:before): Deleted.
        (.timeline .content): Deleted.
        (.timeline figure): Deleted.
        (.timeline .time): Deleted.
        (.timeline h2, .timeline h3): Deleted.
        (.timeline .time::before): Deleted.
        (.timeline img): Deleted.
        (@media (min-width: 900px)): Deleted.
        (.timeline > li.force-clear): Deleted.
        (.timeline > li:nth-child(odd)): Deleted.
        (.timeline > li:nth-child(even)): Deleted.
        (.timeline > li:nth-child(2),): Deleted.
        (.timeline li .time): Deleted.
        (.timeline li:nth-child(odd) .time): Deleted.
        (.timeline li:nth-child(even) .time): Deleted.
        (.timeline li:nth-child(even) .time::before): Deleted.
        (.timeline > li:nth-child(even):before): Deleted.
        (@media (max-width: 900px)): Deleted.
        (.timeline li .time::before): Deleted.
        (.hero .logo,): Deleted.
        (.home .hero): Deleted.
        (.home.admin-bar .hero): Deleted.
        (@media only screen and (max-width: 320px)): Deleted.
        * wp-content/themes/webkit/widgets/post.php: Updated "read more" link presentation.

2017-10-30  Tim Horton  <timothy_horton@apple.com>

        Update safe area inset demo pages to use env()
        https://bugs.webkit.org/show_bug.cgi?id=179041

        Reviewed by Simon Fraser.

        * demos/safe-area-insets/1-default.html:
        * demos/safe-area-insets/2-viewport-fit.html:
        * demos/safe-area-insets/3-safe-area-constants.html:
        * demos/safe-area-insets/4-min-max.html:
        * demos/safe-area-insets/safe-areas.html:
        Update to use env() instead of constant(), but keep constant() around
        for backwards-compatibility.

        Adjust the colors on the safe areas test page to look a little less holiday-like.

2017-10-16  Daniel Bates  <dabates@apple.com>

        No nightlies listed on nightly.webkit.org when using shipping Safari on macOS Sierra and OS X El Capitan
        https://bugs.webkit.org/show_bug.cgi?id=178372

        Reviewed by Tim Horton.

        The Build Archive page depends on the collections (e.g. HTMLCollection) being
        iterable so as to support iteration using ES6 for-of loop. Such support postdates
        the version of WebKit shipped in macOS Sierra and OS X El Capitan. We should
        make <https://webkit.org/build-archives/> work for these OSes since we still publish
        nightlies for them.

        * wp-content/themes/webkit/build-archives.php: Use Array.prototype.slice() to
        convert the HTMLCollection to an array that can be iterated using a ES6 for-of loop.

2017-10-04  Megan Gardner  <megan_gardner@apple.com>

        Update Webkit Style webpage to include Obj-C blocks
        https://bugs.webkit.org/show_bug.cgi?id=177906

        Reviewed by Tim Horton.

        * code-style.md:

2017-10-02  Jon Davis  <jond@apple.com>

        Add a WebKit Build Archives page
        https://bugs.webkit.org/show_bug.cgi?id=177654

        Reviewed by Alexey Proskuryakov.

        * wp-content/themes/webkit/build-archives.php: Added.

2017-09-22  Timothy Horton  <timothy_horton@apple.com>

        Update some links in demos

        * demos/safe-area-insets/1-default.html:
        * demos/safe-area-insets/2-viewport-fit.html:
        * demos/safe-area-insets/3-safe-area-constants.html:
        * demos/safe-area-insets/4-min-max.html:

2017-09-21  Tim Horton  <timothy_horton@apple.com>

        Add some blog post resources
        https://bugs.webkit.org/show_bug.cgi?id=177333

        Reviewed by Sam Weinig.

        * demos/safe-area-insets/1-default.html: Added.
        * demos/safe-area-insets/2-viewport-fit.html: Added.
        * demos/safe-area-insets/3-safe-area-constants.html: Added.
        * demos/safe-area-insets/4-min-max.html: Added.
        * demos/safe-area-insets/safe-areas.html: Added.
        * demos/safe-area-insets/style.css: Added.

2017-08-21  Ross Kirsling  <ross.kirsling@sony.com>

        Add Sony to domain affiliations on team page
        https://bugs.webkit.org/show_bug.cgi?id=175806

        Reviewed by Alex Christensen.

        * wp-content/themes/webkit/team.php:

2017-08-11  Filip Pizlo  <fpizlo@apple.com>

        Caging shouldn't have to use a patchpoint for adding
        https://bugs.webkit.org/show_bug.cgi?id=175483

        Reviewed by Mark Lam.

        Write documentation for the new Opaque opcode.

        * docs/b3/intermediate-representation.html:

2017-08-07  Jon Davis  <jond@apple.com>

        Fixed superscript rendering for blog posts
        https://bugs.webkit.org/show_bug.cgi?id=175285

        Reviewed by Filip Pizlo.

        * wp-content/themes/webkit/style.css:
        (sup): Added.

2017-08-06  James Craig  <jcraig@apple.com>

        Update prefers-reduced-motion demos to link back to blog post
        https://bugs.webkit.org/show_bug.cgi?id=175251

        Unreviewed, added some cross links to older demo files.

        * blog-files/prefers-reduced-motion/axi.htm:
        * blog-files/prefers-reduced-motion/prm.htm:

2017-08-04  Jon Davis  <jond@apple.com>

        Fixed loading feature status page queries and anchor link URLs
        https://bugs.webkit.org/show_bug.cgi?id=175156

        Reviewed by Simon Fraser.

        * wp-content/themes/webkit/status.php:

2017-07-26  Frederic Wang  <fwang@igalia.com>

        Unreviewed, minor adjustments to the previous demo.

        * demos/frames/index.html: Added. Index page for the list of demos.
        * demos/frames/sandboxing/index.html: Minor fixes.

2017-07-26  Frederic Wang  <fwang@igalia.com>

        Unreviewed, add demos (frame sandboxing and scrolling) for a blog post.

        * demos/frames/sandboxing/am-i-sandboxed.html: Added.
        * demos/frames/sandboxing/framebusting-success.html: Added.
        * demos/frames/sandboxing/framebusting-without-user-activation.html: Added.
        * demos/frames/sandboxing/index.html: Added.
        * demos/frames/scrollable-iframes.html: Added.
        * demos/frames/scrollingElement.html: Added.

2017-07-20  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, add the final demo page for a WebCrypto API blog post

        * demos/webcrypto/pbkdf2.html: Added.

2017-07-20  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, add yet another demo page for a WebCrypto API blog post

        * demos/webcrypto/aes-gcm.html:
        * demos/webcrypto/alice.png: Added.
        * demos/webcrypto/bob.png: Added.
        * demos/webcrypto/ecdh.html: Added.

2017-07-20  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, add another demo page for a WebCrypto API blog post

        * demos/webcrypto/aes-gcm.html: Added.
        * demos/webcrypto/asynchronous-execution.html:
        * demos/webcrypto/common.js: Added.

2017-07-19  Jiewen Tan  <jiewen_tan@apple.com>

        Unreviewed, add a demo page for a WebCrypto API blog post

        * demos/webcrypto/asynchronous-execution-worker.js: Added.
        * demos/webcrypto/asynchronous-execution.html: Added.

2017-06-30  Jon Lee  <jonlee@apple.com>

        Add a WebRTC example for a blog post
        https://bugs.webkit.org/show_bug.cgi?id=174049

        Reviewed by Youenn Fablet.

        Example does a typical WebRTC video call, but uses canvas to do some image effects.
        Image effects will last for 30 seconds.
        After that time, the video stream is directly sent.
        This illustrates using RTCPeerConnection, replaceTrack and canvas capture.

        * blog-files/webrtc/pc-with-effects/LICENSE: Added.
        * blog-files/webrtc/pc-with-effects/glfx.js: Added.
        * blog-files/webrtc/pc-with-effects/index.html: Added.
        * blog-files/webrtc/pc-with-effects/main.css: Added.
        * blog-files/webrtc/pc-with-effects/main.js: Added.

2017-06-28  Saam Barati  <sbarati@apple.com>

        Add a Object rest/spread test to the experimental features test page
        https://bugs.webkit.org/show_bug.cgi?id=173947

        Rubber stamped by Dean Jackson.

        * experimental-features.html:

2017-06-07  Jon Davis  <jond@apple.com>

        Update the design of the WebKit Feature Status page
        https://bugs.webkit.org/show_bug.cgi?id=173036

        Reviewed by Simon Fraser.

        * wp-content/themes/webkit/functions.php: Fixed a bad function call.
        * wp-content/themes/webkit/status.php: Implemented redesign with saved search.
        * wp-content/themes/webkit/style.css:
        (.feature-header:after):
        (@media only screen and (max-width: 920px)):
        (@media only screen and (max-width: 600px)):
        (.feature-filters): Deleted.
        (.feature-filters.opened): Deleted.
        (.feature-filters:after): Deleted.
        (.feature-filters.opened:after): Deleted.

2017-06-06  Joseph Pecoraro  <pecoraro@apple.com>

        Add a WebGPU test to the experimental features test page
        https://bugs.webkit.org/show_bug.cgi?id=172953

        Reviewed by Darin Adler.

        * experimental-features.html:

2017-06-06  Joseph Pecoraro  <pecoraro@apple.com>

        Move Resource Timing / User Timing from experimental features into main preferences
        https://bugs.webkit.org/show_bug.cgi?id=172950

        Reviewed by Darin Adler.

        * experimental-features.html:
        Remove no longer experimental features.

2017-06-02  Filip Pizlo  <fpizlo@apple.com>

        Atomics.load and Atomics.store need to be fully fenced
        https://bugs.webkit.org/show_bug.cgi?id=172844

        Reviewed by Keith Miller.

        Update documentation to say that the canonical way to do fully fenced loads and stores is
        AtomicXchgAdd(0, ptr) and AtomicXchg(value, ptr), respectively.

        * docs/b3/intermediate-representation.html:

2017-05-31  Jon Davis  <jond@apple.com>

        Reduce Safari Technology Preview Release Notes posts shown on homepage
        https://bugs.webkit.org/show_bug.cgi?id=172364

        Reviewed by Daniel Bates.

        * wp-content/themes/webkit/functions.php: Load some extra posts.
        * wp-content/themes/webkit/widgets/post.php: Show STP blog posts when it is the current featured post.

2017-05-18  Jon Davis  <jond@apple.com>

        Add an Accessibility icon to webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=172298

        Reviewed by Alexey Proskuryakov.

        * wp-content/themes/webkit/images/icons.svg: Added accessibility icon to the sprite.
        * wp-content/themes/webkit/style.css: New rule to use the accessibility icon from the icons sprite.
        (.tile.category-accessibility .background-image):

2017-05-15  James Craig  <jcraig@apple.com>

        AX: Inaccessible content on webkit.org main page
        https://bugs.webkit.org/show_bug.cgi?id=172106

        Reviewed by Joseph Pecoraro.

        * wp-content/themes/webkit/widgets/icon.php: Resolved link title.
        * wp-content/themes/webkit/widgets/post.php: Resolved link title.
        * wp-content/themes/webkit/widgets/twitter.php: Resolved link titles. Suppressed unlabeled images with alt="".

2017-05-14  James Craig  <jcraig@apple.com>

        Upload poster images and working captioned video
        https://bugs.webkit.org/show_bug.cgi?id=172102

        Unreviewed. More resources for prefers-reduced-motion post.

        * blog-files/prefers-reduced-motion/axi.htm: Added.
        * blog-files/prefers-reduced-motion/axi.png: Removed.
        * blog-files/prefers-reduced-motion/posters: Added.
        * blog-files/prefers-reduced-motion/posters/apple_env_load.jpg: Added.
        * blog-files/prefers-reduced-motion/posters/apple_env_planeshift.jpg: Added.
        * blog-files/prefers-reduced-motion/posters/apple_ios10.jpg: Added.
        * blog-files/prefers-reduced-motion/posters/apple_shoot.jpg: Added.
        * blog-files/prefers-reduced-motion/posters/apple_shoot_reduced.jpg: Added.
        * blog-files/prefers-reduced-motion/posters/apple_sierra.jpg: Added.
        * blog-files/prefers-reduced-motion/posters/apple_sierra_reduced.jpg: Added.
        * blog-files/prefers-reduced-motion/posters/axi.jpg: Added.
        * blog-files/prefers-reduced-motion/posters/viljami.jpg: Added.
        * blog-files/prefers-reduced-motion/prm.htm: Link to axi.htm video demo.

2017-05-14  James Craig  <jcraig@apple.com>

        AX: All the articles on the WebKit blog are called "Clickable Link" by VoiceOver
        https://bugs.webkit.org/show_bug.cgi?id=172096
        <rdar://problem/31624323>

        Unreviewed. Fixing broken link titles for screen readers.

        * wp-content/themes/webkit/loop.php: Adding relevant link label for accessibility.

2017-05-08  James Craig  <jcraig@apple.com>

        More demo files for prefers-reduced-motion post
        https://bugs.webkit.org/show_bug.cgi?id=170663

        Unreviewed.

        * blog-files/prefers-reduced-motion/jaws.gif: Added.
        * blog-files/prefers-reduced-motion/jaws.jpg: Added.
        * blog-files/prefers-reduced-motion/prm.htm: New animated GIF example.

2017-04-24  James Craig  <jcraig@apple.com>

        Upload demo files for prefers-reduced-motion post
        https://bugs.webkit.org/show_bug.cgi?id=170663

        Rubber stamped by Jon Davis.

        * blog-files/prefers-reduced-motion: Added.
        * blog-files/prefers-reduced-motion/axi.png: Added.
        * blog-files/prefers-reduced-motion/prm.htm: Added.

2017-04-18  Jon Davis  <jond@apple.com>

        Images in WebKit.org blog article are stretched out
        https://bugs.webkit.org/show_bug.cgi?id=169208

        Reviewed by Michael Catanzaro.

        * wp-content/themes/webkit/style.css:
        (article figure > img):

2017-04-13  JF Bastien  <jfbastien@apple.com>

        WebAssembly: manage memory better
        https://bugs.webkit.org/show_bug.cgi?id=170628

        Reviewed by Keith Miller, Michael Saboff.

        * docs/b3/intermediate-representation.html: typos

2017-04-08  Simon Fraser  <simon.fraser@apple.com>

        Update the css-status page to handle changes in CSSProperties.json.

        Change the page structure to allow the left sidebar to use sticky positioning.

        "Done" -> "Supported".

        Save the search in the URL.

        Other formatting changes.

        * wp-content/themes/webkit/css-status.php:

2017-04-06  Dean Jackson  <dino@apple.com>

        Fix broken link.

        * demos/webgpu/index.html:

2017-04-06  Jon Davis  <jond@apple.com>

        Updates feature status for recently shipped features
        https://bugs.webkit.org/show_bug.cgi?id=170359

        Reviewed by Brian Burg.

        Added styles for "Supported" status.

        * wp-content/themes/webkit/status.php:

2017-04-04  Dean Jackson  <dino@apple.com>

        Unreviewed. Add details on how to enable the experimental feature.

        * demos/webgpu/index.html:

2017-04-03  Dean Jackson  <dino@apple.com>

        Unreviewed. More WebGPU demos.

        * demos/webgpu/2d.jpg: Added.
        * demos/webgpu/2d.js:
        * demos/webgpu/circle.svg: Added.
        * demos/webgpu/cubes.jpg: Added.
        * demos/webgpu/hello.html: Added.
        * demos/webgpu/hello.jpg: Added.
        * demos/webgpu/hello.js: Copied from Websites/webkit.org/demos/webgpu/2d.js.
        (init):
        (render):
        * demos/webgpu/index.html: Added.
        * demos/webgpu/simple.jpg: Added.

2017-03-31  Dean Jackson  <dino@apple.com>

        Unreviewed. Add some WebGPU examples.

        * demos/webgpu/2d.html: Added.
        * demos/webgpu/2d.js: Added.
        * demos/webgpu/cubes.html: Added.
        * demos/webgpu/cubes.js: Added.
        * demos/webgpu/shared.css: Added.
        * demos/webgpu/shared.js: Added.
        * demos/webgpu/simple.html: Added.
        * demos/webgpu/simple.js: Added.

2017-03-11  Jon Davis  <jond@apple.com>

        Add Swift syntax highlighting to webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=163672

        Reviewed by Matt Baker.

        * wp-content/plugins/hyperlight/hyperlight/languages/swift.php: Added.

2017-03-10  Jon Davis  <jond@apple.com>

        Switch back to the Twitter API for the Tweet widget
        https://bugs.webkit.org/show_bug.cgi?id=168749

        Reviewed by Lucas Forschler.

        Updates the Twitter widget tile implementation to prefer the Twitter API to populate tweets
        displayed through the widget. If the API fails for any reason, it falls back to using the
        Tweet listener for updated tweets.

        The Twitter API provides the benefit of embedding media and being able to display the full
        URLs rather than Twitter-shortened URLs.

        * wp-content/plugins/tweet-listener.php:
        * wp-content/themes/webkit/style.css:
        (.twitter-tile .tile-content):
        (.twitter-tile.text-only):
        (.twitter-tile .media):
        (.twitter-tile img):
        * wp-content/themes/webkit/widgets/twitter.php:

2017-03-04  Filip Pizlo  <fpizlo@apple.com>

        B3 should have comprehensive support for atomic operations
        https://bugs.webkit.org/show_bug.cgi?id=162349

        Reviewed by Keith Miller.

        Document the new opcodes!

        * docs/b3/intermediate-representation.html:

2017-03-09  Jon Davis  <jond@apple.com>

        Prevent HTML in rich link previews
        https://bugs.webkit.org/show_bug.cgi?id=169435

        Reviewed by Tim Horton.

        * wp-content/plugins/social-meta.php:

2017-03-03  Manuel Rego Casasnovas  <rego@igalia.com>

        Unreviewed, minor updates on CSS Grid Layout examples.

        * demos/css-grid/index.html:
        * demos/css-grid/responsive-grid.html:

2017-02-27  Simon Fraser  <simon.fraser@apple.com>

        Add css-status page on webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=168921

        Reviewed by Sam Weinig.

        Add a page that shows the status of CSS properties and values, scraped from Source/WebCore/css/CSSProperties.json.

        This is modeled after the feature status page. Properties can be filtered by status
        and the spec they belong to.

        * wp-content/themes/webkit/css-status.php: Added.

2017-02-23  Joseph Pecoraro  <pecoraro@apple.com>

        [Resource Timing] Add Experimental Feature Flag
        https://bugs.webkit.org/show_bug.cgi?id=167147

        Reviewed by Ryosuke Niwa.

        * experimental-features.html:
        Test for Resource Timing.

2017-02-23  Alex Christensen  <achristensen@webkit.org>

        Add WebRTC to experimental-features.html
        https://bugs.webkit.org/show_bug.cgi?id=168757

        Reviewed by Tim Horton.

        * experimental-features.html:

2017-02-23  Jon Davis  <jond@apple.com>

        Fixed saving survey data
        https://bugs.webkit.org/show_bug.cgi?id=168730

        Reviewed by Joseph Pecoraro.

        * wp-content/themes/webkit/functions.php:

2017-02-20  Manuel Rego Casasnovas  <rego@igalia.com>

        Unreviewed, add CSS Grid Layout examples for a blog post.

        * demos/css-grid/index.html: Added.
        * demos/css-grid/responsive-grid.html: Added.

2017-02-06  Jon Davis  <jond@apple.com>

        Add a survey to learn how people use WebKit Nightly builds
        https://bugs.webkit.org/show_bug.cgi?id=167748

        Reviewed by Joseph Pecoraro.

        * wp-content/themes/webkit/functions.php:
        * wp-content/themes/webkit/nightly-start.php:
        * wp-content/themes/webkit/nightly-survey.php: Added.
        * wp-content/themes/webkit/survey.json: Added.

2017-01-28  Yoav Weiss  <yoav@yoav.ws>

        Add Link Preload as an off-by-default experimental feature menu item.
        https://bugs.webkit.org/show_bug.cgi?id=167201

        Reviewed by Ryosuke Niwa.

        * experimental-features.html: Added Link Preload.

2017-01-28  Joseph Pecoraro  <pecoraro@apple.com>

        Add User Timing Experimental Feature
        https://bugs.webkit.org/show_bug.cgi?id=167542
        <rdar://problem/22746307>

        Reviewed by Ryosuke Niwa.

        * experimental-features.html:

2017-01-27  Dean Jackson  <dino@apple.com>

        Add a simple demo for Touch stylus events
        https://bugs.webkit.org/show_bug.cgi?id=167534

        Reviewed by Simon Fraser.

        * demos/touch/stylus.html: Added.

2017-01-27  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, update scroll snapping demos to use current Module 1 spec

        * demos/scroll-snap/index.html:

        Adopt the new CSS properties scroll-snap-type and scroll-snap-align.

2017-01-26  Wenson Hsieh  <wenson_hsieh@apple.com>

        Unreviewed, add a demo page for an input events blog post

        * demos/input-events/index.html: Added.

2017-01-20  Antoine Quint  <graouts@apple.com>

        Web Animations should be off by default and enabled as an experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=167115
        <rdar://problem/30048963>

        Reviewed by Joseph Pecoraro.

        Add a test for Web Animations feature detection.

        * experimental-features.html:

2017-01-19  Joseph Pecoraro  <pecoraro@apple.com>

        Include SubtleCrypto test on experimental-features test page
        https://bugs.webkit.org/show_bug.cgi?id=167226

        Reviewed by Yusuke Suzuki.

        * experimental-features.html:
        Add a test for SubtleCrypto and make the test resilient against exceptions.

2017-01-19  Timothy Hatcher  <timothy@hatcher.name>

        Add Tesla to the domain associations on the team page
        https://bugs.webkit.org/show_bug.cgi?id=167202

        Reviewed by Brian Burg.

        * wp-content/themes/webkit/team.php:

2016-12-22  Keith Miller  <keith_miller@apple.com>

        Add BitOr for floating points to B3
        https://bugs.webkit.org/show_bug.cgi?id=166446

        Reviewed by Saam Barati.

        Update docs to indicate it's cool to use bit ops with floating point.

        * docs/b3/intermediate-representation.html:

2016-12-07  Dean Jackson  <dino@apple.com>

        Remove runtime toggle for pointer-lock
        https://bugs.webkit.org/show_bug.cgi?id=165577
        <rdar://problems/29566996>

        Reviewed by Jon Lee.

        No need to have pointer-lock tested.

        * experimental-features.html: Also sort the list alphabetically.

2016-12-05  Dean Jackson  <dino@apple.com>

        pointer lock needs to be feature detectable
        https://bugs.webkit.org/show_bug.cgi?id=165426
        <rdar://problem/29486715>

        Reviewed by Antoine Quint.

        We can now accurately detect pointer-lock.

        * experimental-features.html:

2016-12-02  Dean Jackson  <dino@apple.com>

        Make a public facing page to check for WebKit features
        https://bugs.webkit.org/show_bug.cgi?id=165331
        <rdar://problem/29488535>

        Reviewed by Antoine Quint.

        Add a web page to webkit.org that allows us to live
        detect our experimental features. This is mostly for
        internal debugging, but also provides simple examples
        of how real content would do such detection.

        * experimental-features.html: Added.

2016-11-17  Keith Miller  <keith_miller@apple.com>

        Add rotate to Wasm
        https://bugs.webkit.org/show_bug.cgi?id=164871

        Reviewed by Filip Pizlo.

        Update docs for new rotate instructions.

        * docs/b3/intermediate-representation.html:

2016-10-21  Keith Miller  <keith_miller@apple.com>

        Expand Trunc in B3 to support Double to Float
        https://bugs.webkit.org/show_bug.cgi?id=163809

        Update the docs to explain that Trunc now works with fleating point numbers.

        Reviewed by Geoffrey Garen.

        * docs/b3/intermediate-representation.html:

2016-10-14  Keith Miller  <keith_miller@apple.com>

        B3 needs a special WasmAddress Opcode
        https://bugs.webkit.org/show_bug.cgi?id=163394

        Reviewed by Filip Pizlo.

        Update the b3 docs for the new WasmAddress opcode.

        * docs/b3/intermediate-representation.html:

2016-10-14  Simon Fraser  <simon.fraser@apple.com>

        Annotate bots in contributors.json and don't show them on webkit.org/team
        https://bugs.webkit.org/show_bug.cgi?id=163317

        Reviewed by Daniel Bates.

        Don't show bots.

        * wp-content/themes/webkit/team.php:

2016-10-12  Keith Miller  <keith_miller@apple.com>

        B3 needs a special WasmBoundsCheck Opcode
        https://bugs.webkit.org/show_bug.cgi?id=163246

        Reviewed by Filip Pizlo.

        Update the docs for the new WasmBoundsCheck opcode.

        * docs/b3/intermediate-representation.html:

2016-10-09  Simon Fraser  <simon.fraser@apple.com>

        Convert contributors.json to a flat list
        https://bugs.webkit.org/show_bug.cgi?id=163183

        Reviewed by Darin Adler.

        Make contributors.json easier to maintain by eliminating the big groupings ("Committers", "Reviewers" etc)
        and moving that data to a "status" property on each contributor.

        Fix script that generates webkit.org/team.

        * wp-content/themes/webkit/team.php:

2016-10-03  Filip Pizlo  <fpizlo@apple.com>

        B3 trapping memory accesses should be documented
        https://bugs.webkit.org/show_bug.cgi?id=162845

        Reviewed by Geoffrey Garen.

        Added documentation for the Traps flag, and factored out the documentation of the Chill flag
        to a new flags section.

        * docs/b3/intermediate-representation.html:

2016-09-30  Filip Pizlo  <fpizlo@apple.com>

        Air should have a way of expressing additional instruction flags
        https://bugs.webkit.org/show_bug.cgi?id=162699

        Reviewed by Mark Lam.

        * docs/b3/assembly-intermediate-representation.html:

2016-09-28  Filip Pizlo  <fpizlo@apple.com>

        B3 opcodes should leave room for flags
        https://bugs.webkit.org/show_bug.cgi?id=162692

        Reviewed by Keith Miller.

        Updated the documentation to talk about Kind and the isChill bit, and to remove
        ChillDiv/ChillMod.

        * docs/b3/intermediate-representation.html:

2016-09-27  Joseph Pecoraro  <pecoraro@apple.com>

        Update style guide for #pragma once
        https://bugs.webkit.org/show_bug.cgi?id=162633

        Reviewed by Dan Bernstein.

        * code-style.md:
        Update style guide for #pragma once as discussed on webkit-dev.

2016-09-21  Filip Pizlo  <fpizlo@apple.com>

        Add a Fence opcode to B3
        https://bugs.webkit.org/show_bug.cgi?id=162343

        Reviewed by Geoffrey Garen.

        * docs/b3/intermediate-representation.html:

2016-08-16  Benjamin Poulain  <bpoulain@apple.com>

        [JSC] Update the documentation of B3's Return opcode
        https://bugs.webkit.org/show_bug.cgi?id=160912

        Reviewed by Filip Pizlo.

        * docs/b3/intermediate-representation.html:

2016-08-04  Daniel Bates  <dabates@apple.com>

        Add some files for a Content Security Policy blog post

        * blog-files/content-security-policy/compass-base.css: Added.
        (.compass):
        * blog-files/content-security-policy/csp-style-hash.html: Added.
        * blog-files/content-security-policy/icons.svg: Added; derived from file
        Websites/webkit.org/wp-content/themes/webkit/images/icons.svg. I am explicitly
        not referencing file Websites/webkit.org/wp-content/themes/webkit/images/icons.svg
        so that csp-style-hash.html is not affected by changes to this file.

2016-07-24  Filip Pizlo  <fpizlo@apple.com>

        B3 should support multiple entrypoints
        https://bugs.webkit.org/show_bug.cgi?id=159391

        Reviewed by Saam Barati.

        Update some statements about ControlValue (which doesn't exist anymore) and add a blurb
        about EntrySwitch.

        * docs/b3/index.html:
        * docs/b3/intermediate-representation.html:

2016-07-20  Frederic Wang  <fwang@igalia.com>

        Unreviewed, new demo files for an up-coming blog post.

        * demos/mathml/demo2016/LICENSE-amiri.txt: Added.
        * demos/mathml/demo2016/LICENSE-latinmodern-math.txt: Added.
        * demos/mathml/demo2016/LICENSE-libertinusmath.txt: Added.
        * demos/mathml/demo2016/README.txt: Added.
        * demos/mathml/demo2016/amiri-regular.woff: Added.
        * demos/mathml/demo2016/index.html: Added.
        * demos/mathml/demo2016/latinmodern-math.woff: Added.
        * demos/mathml/demo2016/libertinusmath-regular.woff: Added.
        * demos/mathml/demo2016/webfonts.css: Added.
        (@namespace url('http://www.w3.org/1999/xhtml');):
        (@font-face):
        (m|math, m|mtext):
        (m|math.libertinus):
        (m|math.arabic):

2016-07-19  Jon Davis  <jond@apple.com>

        Adjust margins for first-line floating elements and add preset floating video sizing
        https://bugs.webkit.org/show_bug.cgi?id=159898

        Reviewed by Benjamin Poulain.

        * wp-content/themes/webkit/style.css:
        (article video.alignright):
        (article .alignright:first-child):
        (@media only screen and (max-width: 690px)):
            (article .alignright:first-child):
        (@media only screen and (max-width: 415px)):
            (article video.alignright):
            (article .alignright:first-child):

2016-07-17  Filip Pizlo  <fpizlo@apple.com>

        Implement table-based switches in B3/Air
        https://bugs.webkit.org/show_bug.cgi?id=151141

        Reviewed by Benjamin Poulain.

        Update documentation to reflect Patchpoint's new powers.

        * docs/b3/intermediate-representation.html:

2016-07-15  Jon Davis  <jond@apple.com>

        Fixed content overflow and missing build information behavior.
        https://bugs.webkit.org/show_bug.cgi?id=159820

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/nightly-start.php:

2016-07-14  Jon Davis  <jond@apple.com>

        Improved WebKit Nightly start page design.
        https://bugs.webkit.org/show_bug.cgi?id=159780

        Reviewed by Timothy Hatcher.

        Added better 404 handling, improved presentation of the
        start page and new Apache rewrites for the P1 bug list.

        * .htaccess:
        * wp-content/themes/webkit/functions.php:
        * wp-content/themes/webkit/nightly-start.php:

2016-07-01  Jon Davis  <jond@apple.com>

        Added a colorful new image and fixed the Open Graph attribute.
        https://bugs.webkit.org/show_bug.cgi?id=159359

        Reviewed by Timothy Hatcher.

        The Open Graph image tag should use the property attribute not
        the itemprop attribute.

        * wp-content/plugins/social-meta.php:
        * wp-content/themes/webkit/images/ogimage.png:

2016-06-30  Dean Jackson  <dino@apple.com>

        Tab pointed out a typo that made the overdamped case fail.

        * demos/spring/spring.js:
        (SpringSolver.prototype.solve):

2016-06-30  Dean Jackson  <dino@apple.com>

        Fixed a typo in the link to the other version.

        * blog-files/color-gamut/index.html:

2016-06-29  Dean Jackson  <dino@apple.com>

        Add the UI JavaScript library to make
        other browsers happy.

        * demos/spring/dat.gui.min.js: Added.
        * demos/spring/index.html:

2016-06-29  Dean Jackson  <dino@apple.com>

        Demo and JS implementation of our spring() animation
        timing function.

        * demos/spring/index.html: Added.
        * demos/spring/spring.js: Added.
        (SpringSolver):
        (SpringSolver.prototype.solve):

2016-06-29  Dean Jackson  <dino@apple.com>

        Small change to wording, and link to the interactive version.

        * blog-files/color-gamut/index.html:

2016-06-28  Dean Jackson  <dino@apple.com>

        Add a more interactive version of the demo.

        * blog-files/color-gamut/comparison.html: Added.

2016-06-28  Jon Davis  <jond@apple.com>

        Fixed tile height for mobile phone-sized viewports.
        https://bugs.webkit.org/show_bug.cgi?id=159228

        Reviewed by Timothy Hatcher.

        Prevents cutoff text for featured tiles and prevents overlapping text and controls on the Twitter tile for phone-sized viewports.

        * wp-content/themes/webkit/style.css:
        (.twitter-tile.text-only .tile-content):
        (.tile):

2016-06-28  Jon Davis  <jond@apple.com>

        Fixed Open Graph meta data and image entries.
        https://bugs.webkit.org/show_bug.cgi?id=159167.

        Reviewed by Timothy Hatcher.

        This patch addresses Open Graph meta data issues:

        - Added a high-resolution PNG of the WebKit logo because Facebook doesn't support SVG images
        - Uses the first image of a page or post if not featured image is set
        - Article date/time information should not be given for the homepage
        - Added Facebook admins as per the Facebook Open Graph debugger

        * wp-content/plugins/social-meta.php:
        * wp-content/themes/webkit/images/ogimage.png: Added.

2016-06-27  Dean Jackson  <dino@apple.com>

        Updated content for the color blog post.

        * blog-files/color-gamut/Iceland-P3.jpg:
        * blog-files/color-gamut/Iceland-oog.jpg:
        * blog-files/color-gamut/Iceland-sRGB.jpg:
        * blog-files/color-gamut/Italy-P3.jpg:
        * blog-files/color-gamut/Italy-sRGB.jpg:
        * blog-files/color-gamut/Sunset-P3.jpg:
        * blog-files/color-gamut/Sunset-sRGB.jpg:
        * blog-files/color-gamut/YellowFlower-P3.jpg:
        * blog-files/color-gamut/YellowFlower-oog.jpg:
        * blog-files/color-gamut/YellowFlower-sRGB.jpg:
        * blog-files/color-gamut/index.html:

2016-06-27  Jon Davis  <jond@apple.com>

        Set a default image for sharing webkit.org links via social.
        https://bugs.webkit.org/show_bug.cgi?id=159167

        Reviewed by Timothy Hatcher.

        * wp-content/plugins/social-meta.php:

2016-06-24  Dean Jackson  <dino@apple.com>

        More examples for the wide-gamut demo.

        * blog-files/color-gamut/Iceland-P3.jpg: Added.
        * blog-files/color-gamut/Iceland-oog.jpg: Added.
        * blog-files/color-gamut/Iceland-sRGB.jpg: Added.
        * blog-files/color-gamut/Italy-P3.jpg: Added.
        * blog-files/color-gamut/Italy-oog.jpg: Added.
        * blog-files/color-gamut/Italy-sRGB.jpg: Added.
        * blog-files/color-gamut/Sunset-AdobeRGB.jpg: Added.
        * blog-files/color-gamut/Sunset-P3.jpg: Added.
        * blog-files/color-gamut/Sunset-oog.jpg: Added.
        * blog-files/color-gamut/Sunset-sRGB.jpg: Added.
        * blog-files/color-gamut/Webkit-logo-sRGB.png:
        * blog-files/color-gamut/YellowFlower-P3.jpg: Added.
        * blog-files/color-gamut/YellowFlower-oog.jpg: Added.
        * blog-files/color-gamut/YellowFlower-sRGB.jpg: Added.
        * blog-files/color-gamut/index.html:

2016-06-24  Dean Jackson  <dino@apple.com>

        Change something in the webkit.org directory in the hope
        it will kick off a website update.

2016-06-24  Jon Davis  <jond@apple.com>

        Rewrite the WebKit Nightly build download URLs to use the correct secure URL.
        https://bugs.webkit.org/show_bug.cgi?id=159100.

        Reviewed by Joseph Pecoraro.

        * wp-content/plugins/sync-nightly-builds.php:

2016-06-13  Jon Davis  <jond@apple.com>

        Minor style updates for figcaptions and post forewords.

        * wp-content/themes/webkit/style.css:
        (article .foreword):
        (figure.aligncenter figcaption):
        (figure.aligncenter figcaption::before):

2016-06-13  Jon Davis  <jond@apple.com>

        Adds support for foreword custom meta and display styles on blog posts.
        https://bugs.webkit.org/show_bug.cgi?id=158707.

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/functions.php:
        * wp-content/themes/webkit/style.css:
        (article .foreword):

2016-06-02  Dean Jackson  <dino@apple.com>

        Update the example for wider color gamut images.

        * blog-files/color-gamut/index.html:

2016-06-02  Dean Jackson  <dino@apple.com>

        Adding some sample images for a blog post on color.

        * blog-files/color-gamut/Flowers-AdobeRGB.jpg: Added.
        * blog-files/color-gamut/Flowers-ProPhoto.jpg: Added.
        * blog-files/color-gamut/Flowers-oog.jpg: Added.
        * blog-files/color-gamut/Flowers-sRGB.jpg: Added.
        * blog-files/color-gamut/Rose-AdobeRGB.jpg: Added.
        * blog-files/color-gamut/Rose-ProPhoto.jpg: Added.
        * blog-files/color-gamut/Rose-oog.jpg: Added.
        * blog-files/color-gamut/Rose-sRGB.jpg: Added.
        * blog-files/color-gamut/index.html: Added.

2016-06-02  Filip Pizlo  <fpizlo@apple.com>

        Fix typos and make some revisions to the B3 docs
        https://bugs.webkit.org/show_bug.cgi?id=158311

        Reviewed by Michael Saboff.

        I found typos and fixed them. Also, I clarified some things:

        - Is B3 IR platform-agnostic? Sort of. I tried to describe when it is (Values usually behave
          the same way regardless of CPU) and when it isn't (it lets you speak of registers if that's
          what you want to do, for example).

        - How does isValidForm really get used? You don't really need to create an Inst to use it.

        - Some other incremental improvements to make the docs clearer.

        * docs/b3/assembly-intermediate-representation.html:
        * docs/b3/index.html:
        * docs/b3/intermediate-representation.html:

2016-05-31  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, fix an obvious typo: a missing comma.

        * docs/b3/assembly-intermediate-representation.html:

2016-05-31  Filip Pizlo  <fpizlo@apple.com>

        Air needs documentation
        https://bugs.webkit.org/show_bug.cgi?id=153668

        Reviewed by Mark Lam, Saam Barati, and Benjamin Poulain.

        Write documentation for Air!

        * docs/b3/assembly-intermediate-representation.html:

2016-05-23  Jon Davis  <jond@apple.com>

        Add syntax highglighting for ES6 "let", "const" and "of" keywords.
        https://bugs.webkit.org/show_bug.cgi?id=157994

        Reviewed by Geoffrey Garen.

        * wp-content/plugins/hyperlight/hyperlight/languages/javascript.php:

2016-05-13  Brady Eidson  <beidson@apple.com>

        Extend protector naming code style guideline to cover operator= assignment.
        https://bugs.webkit.org/show_bug.cgi?id=157693

        Reviewed by Darin Adler.

        * code-style.md:

2016-05-13  Brady Eidson  <beidson@apple.com>

        Protector Ref/RefPtrs should have a specified naming style.
        https://bugs.webkit.org/show_bug.cgi?id=157591

        Reviewed by Darin Adler.

        * code-style.md:

2016-04-26  Timothy Hatcher  <timothy@apple.com>

        Remove hard-wraps from the feature policy markdown so it renders full width on the site.

        * feature-policy.md:

2016-04-14  Edward O'Connor  <eoconnor@apple.com>

        Publish the Web-exposed feature policy on webkit.org.
        https://bugs.webkit.org/show_bug.cgi?id=156552

        Reviewed by Timothy Hatcher.

        * feature-policy.md: Added.

2016-04-13  Jon Davis  <jond@apple.com>

        Remove database quote escapes from pushed tweets.

        Reviewed by Timothy Hatcher.

        * wp-content/plugins/tweet-listener.php:

2016-04-13  Jon Davis  <jond@apple.com>

        Added background color for Safari Technology Preview posts.

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/style.css:
        (.tile.category-safari-technology-preview .background-image):

2016-04-07  Jon Davis  <jond@apple.com>

        Improved drop down menu with translate; cleaned up unnecessary whitespace.
        https://bugs.webkit.org/show_bug.cgi?id=156342

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/style.css:
        (p > a[name]::before):
        (.has-post-thumbnail .background-image):
        (.table-of-contents):
        (header .menu-item-has-children .label-toggle::after):
        (.sub-menu-layer):
        (.sub-menu-layer:after, .sub-menu-layer:before):
        (.sub-menu-layer .menu-item):
        (.menu > .menu-item > .menu-toggle:checked + .sub-menu):
        (@media only screen and (max-width: 920px)):
        (header .sub-menu-layer):
        (@media only screen and (max-width: 415px)):
        (@media only screen and (max-width: 1180px)): Deleted.
        (@media only screen and (max-width: 1000px)): Deleted.
        (@media only screen and (max-width: 690px)): Deleted.
        (@media only screen and (max-width: 600px)): Deleted.
        (@media only screen and (max-height: 415px)): Deleted.
        (@media only screen and (max-width: 320px)): Deleted.

2016-04-05  Jon Davis  <jond@apple.com>

        Make the @webkit link on the front page link to the feed
        https://bugs.webkit.org/show_bug.cgi?id=156244

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/widgets/twitter.php:

2016-03-31  Jon Davis  <jond@apple.com>

        Show tweets by @webkit in the Twitter tile on webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=156093

        Reviewed by Timothy Hatcher.

        * wp-content/plugins/tweet-listener.php: Added.
        * wp-content/themes/webkit/widgets/twitter.php:

2016-03-31  Jon Davis  <jond@apple.com>

        Fix download links for desktops with small resolutions
        https://bugs.webkit.org/show_bug.cgi?id=156081

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/downloads.php:

2016-03-29  Jon Davis  <jond@apple.com>

        Fixed a property access error by removing the lamda function for updates
        https://bugs.webkit.org/show_bug.cgi?id=155989

        * wp-content/plugins/sync-nightly-builds.php:

2016-03-29  Jon Davis  <jond@apple.com>

        Fixed a context error for Nightly Build sync plugin, tightens layout styles for abovetitle
        https://bugs.webkit.org/show_bug.cgi?id=155989

        Unreviewed fix for the Sync Nightly Builds plugin to work with the older
        PHP environment on the server. Quick style adjustments for abovetitle images.

        * wp-content/plugins/sync-nightly-builds.php:
        * wp-content/themes/webkit/nightly-archives.php:
        * wp-content/themes/webkit/style.css:
        (article .abovetitle):

2016-03-29  Jon Davis  <jond@apple.com>

        Add WebKit Nightly Archives, WebKit Nightly Start, and Downloads pages
        https://bugs.webkit.org/show_bug.cgi?id=155989

        Reviewed by Timothy Hatcher.

        * wp-content/plugins/sync-nightly-builds.php: Added.
        * wp-content/themes/webkit/downloads.php: Added.
        * wp-content/themes/webkit/functions.php:
        * wp-content/themes/webkit/images/download.svg:
        * wp-content/themes/webkit/images/spinner.svg: Added.
        * wp-content/themes/webkit/nightly-archives.php: Added.
        * wp-content/themes/webkit/nightly-start.php: Added.
        * wp-content/themes/webkit/nightly.php:
        * wp-content/themes/webkit/scripts/searchbuilds.js: Added.
        (initsearch.xhrPromise.):
        (initsearch):
        (initsearch.displayResults.addEntry):
        (initsearch.displayResults):
        (initsearch.displayError):
        (initsearch.clearErrors):
        * wp-content/themes/webkit/style.css:
        (input[type=text]):
        (input[type=submit]):
        (article .byline):
        (article .abovetitle):

2016-03-29  Jon Davis  <jond@apple.com>

        Support images above the title on webkit.org posts
        https://bugs.webkit.org/show_bug.cgi?id=155979

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/functions.php:
        * wp-content/themes/webkit/single.php:

2016-03-22  Jonathan Davis  <jond@apple.com>

        Allow the use of custom styles and scripts for blog posts
        https://bugs.webkit.org/show_bug.cgi?id=155768

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/functions.php:

2016-03-09  Jonathan Davis  <jond@apple.com>

        For RSS feeds, convert image and link relative URIs to absolute URIs
        https://bugs.webkit.org/show_bug.cgi?id=155237

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/functions.php:

2016-03-03  Saam barati  <sbarati@apple.com>

        Update style guide to reflect our style of only using "override" or "final" when overriding virtual methods
        https://bugs.webkit.org/show_bug.cgi?id=154978

        Reviewed by Darin Adler.

        * code-style.md:

2016-02-29  Yusuke Suzuki  <utatane.tea@gmail.com>

        [DFG][FTL][B3] Support floor and ceil
        https://bugs.webkit.org/show_bug.cgi?id=154683

        Reviewed by Filip Pizlo.

        * docs/b3/intermediate-representation.html:

2016-02-16  Jonathan Davis  <jond@apple.com>

        Add a redirect for B3 documentation
        https://bugs.webkit.org/show_bug.cgi?id=154293

        Reviewed by Timothy Hatcher.

        * .htaccess:

2016-02-15  Timothy Hatcher  <timothy@apple.com>

        Fix byline to avoid bumping into content sticks out.

        * wp-content/themes/webkit/style.css:
        (article .byline): Bump padding to avoid content with negative margins.

2016-02-13  Timothy Hatcher  <timothy@apple.com>

        Adjust the appearance of mattewhite figures that are not widescreen.

        * wp-content/themes/webkit/style.css:
        (article .mattewhite:not(.widescreen):

2016-02-12  Jonathan Davis  <jond@apple.com>

        Add a CSS class to remove padding when using mattewhite class for figures
        https://bugs.webkit.org/show_bug.cgi?id=154206

        Reviewed by Filip Pizlo.

        * wp-content/themes/webkit/style.css:
        (article .two-columns):
        (article .two-columns h6):
        (article .two-columns p):
        (article .mattewhite):
        (article .mattewhite.tightwad):
        (article figure):

2016-02-12  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, upload some blog files.

        * blog-files/compile-times.png: Added.
        * blog-files/fast-isel.png: Added.
        * blog-files/jetstream-latency.png: Added.
        * blog-files/jetstream-throughput.png: Added.
        * blog-files/jetstream.png: Added.
        * blog-files/kraken.png: Added.
        * blog-files/low-compile-times.png: Added.
        * blog-files/low-fast-isel.png: Added.
        * blog-files/low-jetstream-latency.png: Added.
        * blog-files/low-jetstream-throughput.png: Added.
        * blog-files/low-jetstream.png: Added.
        * blog-files/low-kraken.png: Added.
        * blog-files/low-octane.png: Added.
        * blog-files/octane.png: Added.

2016-02-04  Jonathan Davis  <jond@apple.com>

        Fix bad link on the Feature Status page.
        https://bugs.webkit.org/show_bug.cgi?id=152086

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/status.php:

2016-02-02  Filip Pizlo  <fpizlo@apple.com>

        Get rid of anonymous stack slots
        https://bugs.webkit.org/show_bug.cgi?id=151128

        Reviewed by Mark Lam.

        This changes the documentation to account for the addition of Variables and the Get and Set
        opcodes, and the removal of anonymous stack slots from B3 IR.

        * docs/b3/intermediate-representation.html:

2016-02-02  Dan Bernstein  <mitz@apple.com>

        Tagline in B3 docs should match the rest of the website
        https://bugs.webkit.org/show_bug.cgi?id=153801

        Reviewed by Filip Pizlo.

        Fix the tagline.

        * docs/b3/assembly-intermediate-representation.html:
        * docs/b3/index.html:
        * docs/b3/intermediate-representation.html:

2016-02-02  Filip Pizlo  <fpizlo@apple.com>

        Minor fixes for B3 IR documentation
        https://bugs.webkit.org/show_bug.cgi?id=153782

        Reviewed by Michael Saboff.

        Fix minor issues that Geoff found.

        * docs/b3/intermediate-representation.html:

2016-01-30  Filip Pizlo  <fpizlo@apple.com>

        B3 documentation style shouldn't have hacks for h1
        https://bugs.webkit.org/show_bug.cgi?id=153725

        Reviewed by Alexey Proskuryakov.

        * docs/b3/style.css:

2016-01-30  Filip Pizlo  <fpizlo@apple.com>

        Improve the style of B3 documentation
        https://bugs.webkit.org/show_bug.cgi?id=153674

        Reviewed by Oliver Hunt.

        This makes the style of the B3 documentation look like the Wiki, which I think is
        appropriate for the kind of content that we're putting into it - in particular, the font
        is the perfect size for dense content. The style also doesn't require much spoonfeeding
        from the HTML side so you can write nice looking documentation by just using really
        basic HTML constructs.

        * docs/b3/assembly-intermediate-representation.html:
        * docs/b3/index.html:
        * docs/b3/intermediate-representation.html:
        * docs/b3/style.css:

2016-01-29  Filip Pizlo  <fpizlo@apple.com>

        Clean up the B3 documentation a bit
        https://bugs.webkit.org/show_bug.cgi?id=153678

        Reviewed by Saam Barati.

        * docs/b3/index.html: Fix some links and fix small issues.
        * docs/b3/intermediate-representation.html: Clean up some text and fix small issues.

2016-01-29  Filip Pizlo  <fpizlo@apple.com>

        B3 should have documentation
        https://bugs.webkit.org/show_bug.cgi?id=153658

        Reviewed by Saam Barati.

        Change the documentation to use HTML instead of Markdown.  Markdown has trouble with
        definition lists.  Things go downhill when you try to add paragraphs or code blocks to
        a definition.  That's unfortunate since we use definitions for the IR document.

        Since there is no way to use our preferred styling for the IR document without doing a
        lot of bad hacks, it's best if we just stick to HTML. It looks plain but it's highly
        practical.

        * docs/b3/assembly-intermediate-representation.html: Added.
        * docs/b3/bare-bones-backend.md: Removed.
        * docs/b3/index.html: Added.
        * docs/b3/intermediate-representation.html: Added.
        * docs/b3/style.css: Added.
        (dd):
        (dd:last-child):

2016-01-29  Timothy Hatcher  <timothy@apple.com>

        Add some defintion list styles.

        * wp-content/themes/webkit/style.css:
        (dl):
        (dt):
        (dd):

2016-01-29  Filip Pizlo  <fpizlo@apple.com>

        B3 should have documentation
        https://bugs.webkit.org/show_bug.cgi?id=153658

        Reviewed by Timothy Hatcher.

        * docs: Added.
        * docs/b3: Added.
        * docs/b3/bare-bones-backend.md: Added.

2016-01-16  Timothy Hatcher  <timothy@apple.com>

        Fix some responsive issues on smaller screens.

        * wp-content/themes/webkit/style.css:
        (.timeline .time):
        (@media (max-width: 900px)):
        (.timeline:before):
        (.timeline > li):
        (.timeline > li:before):
        (.timeline .content):
        (.timeline li .time::before):

2016-01-14  Timothy Hatcher  <timothy@apple.com>

        Eliminate the margin on timeline elements so multiple timelines can touch.

        * wp-content/themes/webkit/style.css:
        (.timeline):

2016-01-14  Timothy Hatcher  <timothy@apple.com>

        Use a 2px border radius instead to look good on 2x devices as well as 1x.

        * wp-content/themes/webkit/style.css:
        (.timeline .time):

2016-01-14  Timothy Hatcher  <timothy@apple.com>

        Fix hairline crack on 1x devices between arrow and time label.

        * wp-content/themes/webkit/style.css:
        (.timeline .content):
        (.timeline .time):

2016-01-13  Timothy Hatcher  <timothy@apple.com>

        Correct some history timeline styles.

        * wp-content/themes/webkit/style.css:
        (.timeline .content):

2016-01-13  Timothy Hatcher  <timothy@apple.com>

        Add styles for a history timeline, needed by an upcoming blog post.

        * wp-content/themes/webkit/style.css:
        (.timeline):
        (.timeline:after):
        (.timeline *):
        (.timeline:before):
        (.timeline > li):
        (.timeline > li:before):
        (.timeline .content):
        (.timeline figure):
        (.timeline .time):
        (.timeline h2, .timeline h3):
        (.timeline .time::before):
        (.timeline img):
        (@media (min-width: 900px)):
        (.timeline > li.force-clear):
        (.timeline > li:nth-child(odd)):
        (.timeline > li:nth-child(even)):
        (.timeline > li.force-clear + li):
        (.timeline li .time):
        (.timeline li:nth-child(odd) .time):
        (.timeline li:nth-child(even) .time):
        (.timeline li:nth-child(even) .time::before):
        (.timeline > li:nth-child(even):before):

2016-01-06  Jonathan Davis  <jond@apple.com>

        Fixed Individuals and Vendor Contact formatting.
        https://bugs.webkit.org/show_bug.cgi?id=152714

        Reviewed by Timothy Hatcher.

        * security-policy.md:

2015-12-09  Jonathan Davis  <jond@apple.com>

        Fixed broken link: https://webkit.org/old/security/security-group-members.html
        https://bugs.webkit.org/show_bug.cgi?id=152010

        Reviewed by Timothy Hatcher.

        * .htaccess:
        * security-policy.md:
        * wp-content/themes/webkit/style.css:
        (article h4):
        (article h5):

2015-12-09  Jonathan Davis  <jond@apple.com>

        Fix function reference change.

        * wp-content/themes/webkit/scripts/global.js:

2015-12-08  Jonathan Davis  <jond@apple.com>

        Wide tables should be scrollable on narrow mobile screens.
        https://bugs.webkit.org/show_bug.cgi?id=151941

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/scripts/global.js:
        (inView):
        (onMovement):
        (updateImages):
        (enableScrollableTables):
        (update): Deleted.
        * wp-content/themes/webkit/style.css:
        (.pagination .prev-post):
        (article .scrollable):
        (.scrollable .scrollable-padding):

2015-12-08  Jonathan Davis  <jond@apple.com>

        Fix Code Style Guidelines code parsing.
        https://bugs.webkit.org/show_bug.cgi?id=152024

        Reviewed by Timothy Hatcher.

        * wp-content/plugins/table-of-contents.php:

2015-12-08  Jonathan Davis  <jond@apple.com>

        Fix social meta for home page.
        https://bugs.webkit.org/show_bug.cgi?id=151764

        Reviewed by Timothy Hatcher.

        * wp-content/plugins/social-meta.php:

2015-12-07  Jonathan Davis  <jond@apple.com>

        Implemented a workaround for sharp SVG WebKit logo.
        https://bugs.webkit.org/show_bug.cgi?id=151971

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/images/webkit.svg:

2015-12-07  Jonathan Davis  <jond@apple.com>

        Address UX issues with the Contribute menu.
        https://bugs.webkit.org/show_bug.cgi?id=151874

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/functions.php:
        * wp-content/themes/webkit/header.php:
        * wp-content/themes/webkit/style.css:
        (time, mark, audio, video):
        (footer, header, hgroup, menu, nav, section):
        (html):
        (body):
        (ol, ul):
        (blockquote, q):
        (q:before, q:after):
        (table):
        (p:empty):
        (.admin-bar p > a[name]::before):
        (.screen-reader-text):
        (.screen-reader-text:focus):
        (pre):
        (code):
        (.feature-header:after):
        (.feature.opened .feature-header:after):
        (footer nav a:hover):
        (header .menu-item-has-children .label-toggle::after):
        (header .menu-item):
        (.sub-menu-layer):
        (.sub-menu-layer .menu-item:first-child):
        (.menu > .menu-item > .menu-toggle:checked + .sub-menu):
        (@media only screen and (max-width: 920px)):
        (header .menu-item > .menu-toggle:checked + a > .label-toggle::after):
        (header .menu):
        (header .menu-toggle:checked ~ ul):
        (header .sub-menu-layer:before):
        (header .menu > .menu-item > .menu-toggle:checked ~ .sub-menu):
        (footer nav li):
        (@media only screen and (max-width: 690px)):
        (.feature-filters:after):
        (.feature-filters.opened:after):
        (#wpadminbar):
        (.table-of-contents label:after):
        (.menu-toggle:checked ~ .table-of-contents label:after):
        (.table-of-contents h6):
        (header nav .menu-item-has-children .label-toggle): Deleted.
        (header nav .menu-item): Deleted.
        (header .menu > .menu-item-has-children:hover > a::before): Deleted.
        (.menu > .menu-item > .menu-toggle:checked ~ .sub-menu): Deleted.
        (header nav .menu-toggle:checked ~ ul): Deleted.
        (header .menu-toggle:checked ~ .sub-menu): Deleted.
        (@media only screen and (max-width: 782px)): Deleted.

2015-12-05  Timothy Hatcher  <timothy@apple.com>

        One last fix for https redirect.

        * wp-content/themes/webkit/.htaccess:

2015-12-05  Timothy Hatcher  <timothy@apple.com>

        Attempt to fix www redirect again.

        * wp-content/themes/webkit/.htaccess:

2015-12-05  Timothy Hatcher  <timothy@apple.com>

        Fix www redirect again.

        * wp-content/themes/webkit/.htaccess:

2015-12-05  Timothy Hatcher  <timothy@apple.com>

        Fix www redirect when https was used and restore status URL code.

        * wp-content/themes/webkit/.htaccess:
        * wp-content/themes/webkit/status.php:

2015-12-05  Timothy Hatcher  <timothy@apple.com>

        Another attempt to fix a 404 error when the site loads via www.webkit.org.

        * wp-content/themes/webkit/status.php:

2015-12-05  Timothy Hatcher  <timothy@apple.com>

        Fix a 404 error when the site loads via www.webkit.org.

        * wp-content/themes/webkit/status.php:

2015-12-04  Timothy Hatcher  <timothy@apple.com>

        Fix toggling so hidden links are not clickable still.

        * wp-content/themes/webkit/status.php:

2015-12-04  Timothy Hatcher  <timothy@apple.com>

        Fix another place where feature status internal reference links were wrong.

        * wp-content/themes/webkit/status.php:

2015-12-04  Jonathan Davis  <jond@apple.com>

        Fixed feature status internal reference links.

        * wp-content/themes/webkit/status.php:

2015-12-04  Jonathan Davis  <jond@apple.com>

        Update feature status for up-to-date status information.
        https://bugs.webkit.org/show_bug.cgi?id=151821

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/status.php:

2015-12-04  Jonathan Davis  <jond@apple.com>

        Added redirects for old webkit.org archive.

        * .htaccess:

2015-12-04  Jonathan Davis  <jond@apple.com>

        Removing empty directories from the old site.

        Reviewed by Timothy Hatcher.

        * blog: Removed.
        * blog/wp-admin: Removed.
        * blog/wp-admin/css: Removed.
        * blog/wp-admin/css/colors: Removed.
        * blog/wp-admin/css/colors/blue: Removed.
        * blog/wp-admin/css/colors/coffee: Removed.
        * blog/wp-admin/css/colors/ectoplasm: Removed.
        * blog/wp-admin/css/colors/light: Removed.
        * blog/wp-admin/css/colors/midnight: Removed.
        * blog/wp-admin/css/colors/ocean: Removed.
        * blog/wp-admin/css/colors/sunrise: Removed.
        * blog/wp-admin/images: Removed.
        * blog/wp-admin/includes: Removed.
        * blog/wp-admin/js: Removed.
        * blog/wp-admin/maint: Removed.
        * blog/wp-admin/network: Removed.
        * blog/wp-admin/user: Removed.
        * blog/wp-content: Removed.
        * blog/wp-content/plugins: Removed.
        * blog/wp-content/plugins/akismet: Removed.
        * blog/wp-content/themes: Removed.
        * blog/wp-content/themes/classic: Removed.
        * blog/wp-content/themes/default: Removed.
        * blog/wp-content/themes/default/images: Removed.
        * blog/wp-content/themes/webkit: Removed.
        * blog/wp-content/uploads: Removed.
        * blog/wp-content/uploads/2007: Removed.
        * blog/wp-content/uploads/2007/06: Removed.
        * blog/wp-includes: Removed.
        * blog/wp-includes/ID3: Removed.
        * blog/wp-includes/SimplePie: Removed.
        * blog/wp-includes/SimplePie/Cache: Removed.
        * blog/wp-includes/SimplePie/Content: Removed.
        * blog/wp-includes/SimplePie/Content/Type: Removed.
        * blog/wp-includes/SimplePie/Decode: Removed.
        * blog/wp-includes/SimplePie/Decode/HTML: Removed.
        * blog/wp-includes/SimplePie/HTTP: Removed.
        * blog/wp-includes/SimplePie/Net: Removed.
        * blog/wp-includes/SimplePie/Parse: Removed.
        * blog/wp-includes/SimplePie/XML: Removed.
        * blog/wp-includes/SimplePie/XML/Declaration: Removed.
        * blog/wp-includes/Text: Removed.
        * blog/wp-includes/Text/Diff: Removed.
        * blog/wp-includes/Text/Diff/Engine: Removed.
        * blog/wp-includes/Text/Diff/Renderer: Removed.
        * blog/wp-includes/certificates: Removed.
        * blog/wp-includes/css: Removed.
        * blog/wp-includes/fonts: Removed.
        * blog/wp-includes/images: Removed.
        * blog/wp-includes/images/crystal: Removed.
        * blog/wp-includes/images/media: Removed.
        * blog/wp-includes/images/smilies: Removed.
        * blog/wp-includes/images/wlw: Removed.
        * blog/wp-includes/js: Removed.
        * blog/wp-includes/js/crop: Removed.
        * blog/wp-includes/js/imgareaselect: Removed.
        * blog/wp-includes/js/jcrop: Removed.
        * blog/wp-includes/js/jquery: Removed.
        * blog/wp-includes/js/jquery/ui: Removed.
        * blog/wp-includes/js/mediaelement: Removed.
        * blog/wp-includes/js/plupload: Removed.
        * blog/wp-includes/js/scriptaculous: Removed.
        * blog/wp-includes/js/swfupload: Removed.
        * blog/wp-includes/js/swfupload/plugins: Removed.
        * blog/wp-includes/js/thickbox: Removed.
        * blog/wp-includes/js/tinymce: Removed.
        * blog/wp-includes/js/tinymce/langs: Removed.
        * blog/wp-includes/js/tinymce/plugins: Removed.
        * blog/wp-includes/js/tinymce/plugins/charmap: Removed.
        * blog/wp-includes/js/tinymce/plugins/colorpicker: Removed.
        * blog/wp-includes/js/tinymce/plugins/compat3x: Removed.
        * blog/wp-includes/js/tinymce/plugins/compat3x/css: Removed.
        * blog/wp-includes/js/tinymce/plugins/directionality: Removed.
        * blog/wp-includes/js/tinymce/plugins/fullscreen: Removed.
        * blog/wp-includes/js/tinymce/plugins/hr: Removed.
        * blog/wp-includes/js/tinymce/plugins/image: Removed.
        * blog/wp-includes/js/tinymce/plugins/inlinepopups: Removed.
        * blog/wp-includes/js/tinymce/plugins/inlinepopups/skins: Removed.
        * blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2: Removed.
        * blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img: Removed.
        * blog/wp-includes/js/tinymce/plugins/lists: Removed.
        * blog/wp-includes/js/tinymce/plugins/media: Removed.
        * blog/wp-includes/js/tinymce/plugins/media/css: Removed.
        * blog/wp-includes/js/tinymce/plugins/media/js: Removed.
        * blog/wp-includes/js/tinymce/plugins/paste: Removed.
        * blog/wp-includes/js/tinymce/plugins/paste/js: Removed.
        * blog/wp-includes/js/tinymce/plugins/spellchecker: Removed.
        * blog/wp-includes/js/tinymce/plugins/spellchecker/classes: Removed.
        * blog/wp-includes/js/tinymce/plugins/spellchecker/classes/utils: Removed.
        * blog/wp-includes/js/tinymce/plugins/spellchecker/css: Removed.
        * blog/wp-includes/js/tinymce/plugins/spellchecker/img: Removed.
        * blog/wp-includes/js/tinymce/plugins/spellchecker/includes: Removed.
        * blog/wp-includes/js/tinymce/plugins/tabfocus: Removed.
        * blog/wp-includes/js/tinymce/plugins/textcolor: Removed.
        * blog/wp-includes/js/tinymce/plugins/wordpress: Removed.
        * blog/wp-includes/js/tinymce/plugins/wordpress/css: Removed.
        * blog/wp-includes/js/tinymce/plugins/wordpress/img: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpautoresize: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpdialogs: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpdialogs/js: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpeditimage: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpeditimage/css: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpeditimage/img: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpeditimage/js: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpemoji: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpfullscreen: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpfullscreen/css: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpgallery: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpgallery/img: Removed.
        * blog/wp-includes/js/tinymce/plugins/wplink: Removed.
        * blog/wp-includes/js/tinymce/plugins/wplink/css: Removed.
        * blog/wp-includes/js/tinymce/plugins/wplink/img: Removed.
        * blog/wp-includes/js/tinymce/plugins/wplink/js: Removed.
        * blog/wp-includes/js/tinymce/plugins/wpview: Removed.
        * blog/wp-includes/js/tinymce/skins: Removed.
        * blog/wp-includes/js/tinymce/skins/lightgray: Removed.
        * blog/wp-includes/js/tinymce/skins/lightgray/fonts: Removed.
        * blog/wp-includes/js/tinymce/skins/lightgray/img: Removed.
        * blog/wp-includes/js/tinymce/skins/wordpress: Removed.
        * blog/wp-includes/js/tinymce/skins/wordpress/images: Removed.
        * blog/wp-includes/js/tinymce/themes: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced/img: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced/js: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced/skins: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/default: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/default/img: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/highcontrast: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme: Removed.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img: Removed.
        * blog/wp-includes/js/tinymce/themes/modern: Removed.
        * blog/wp-includes/js/tinymce/utils: Removed.
        * blog/wp-includes/pomo: Removed.
        * blog/wp-includes/theme-compat: Removed.
        * building: Removed.
        * coding: Removed.
        * coding/images: Removed.
        * css: Removed.
        * images: Removed.
        * misc: Removed.
        * misc/DatabaseExample.html: Removed.
        * misc/DatabaseTester.html: Removed.
        * misc/WebKitDetect.html: Removed.
        * misc/WebKitDetect.js: Removed.
        * misc/drosera: Removed.
        * misc/drosera/demo.js: Removed.
        * misc/drosera/drosera.png: Removed.
        * misc/drosera/index.html: Removed.
        * misc/gradient-input.html: Removed.
        * misc/morph.html: Removed.
        * misc/related-target-and-shadow-dom.svg: Removed.
        * projects: Removed.
        * projects/accessibility: Removed.
        * projects/cleanup: Removed.
        * projects/compat: Removed.
        * projects/css: Removed.
        * projects/documentation: Removed.
        * projects/dom: Removed.
        * projects/editing: Removed.
        * projects/forms: Removed.
        * projects/html: Removed.
        * projects/javascript: Removed.
        * projects/layout: Removed.
        * projects/mathml: Removed.
        * projects/performance: Removed.
        * projects/plugins: Removed.
        * projects/portability: Removed.
        * projects/printing: Removed.
        * projects/svg: Removed.
        * projects/webkit: Removed.
        * projects/xml: Removed.
        * projects/xslt: Removed.
        * quality: Removed.
        * security: Removed.

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Allow index.html indexes again.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Remove the old site files.

        * asking_questions.html: Removed.
        * building/active-scheme-xcode4.png: Removed.
        * building/build-settings-tab-xcode4.png: Removed.
        * building/build.html: Removed.
        * building/checkout.html: Removed.
        * building/custom-executable-xcode4.png: Removed.
        * building/cygwin-downloader.zip: Removed.
        * building/debug-mac-uiprocess.html: Removed.
        * building/debug.html: Removed.
        * building/launch-debugger-vs2010-small.png: Removed.
        * building/launch-debugger-vs2010.png: Removed.
        * building/run-xcode4.png: Removed.
        * building/run.html: Removed.
        * building/set-as-startup-project-vs2010.png: Removed.
        * building/set-debugging-properties-vs2010-small.png: Removed.
        * building/set-debugging-properties-vs2010.png: Removed.
        * building/tools.html: Removed.
        * coding/RefPtr.html: Removed.
        * coding/adding-features.html: Removed.
        * coding/assertion-guidelines.html: Removed.
        * coding/bsd-license.html: Removed.
        * coding/coding-style.html: Removed.
        * coding/commit-review-policy.html: Removed.
        * coding/contributing.html: Removed.
        * coding/dom-element-attach.html: Removed.
        * coding/images/contribute_add_attachment.png: Removed.
        * coding/images/contribute_mark_review.png: Removed.
        * coding/images/dom-element-attach-large.png: Removed.
        * coding/images/dom-element-attach-small.png: Removed.
        * coding/images/dom-element-attach.graffle: Removed.
        * coding/lgpl-license.html: Removed.
        * coding/major-objects.html: Removed.
        * coding/scripts.html: Removed.
        * coding/technical-articles.html: Removed.
        * contact.html: Removed.
        * css/blue.css: Removed.
        * css/gray.css: Removed.
        * css/green.css: Removed.
        * css/ie.css: Removed.
        * css/main.css: Removed.
        * css/pink.css: Removed.
        * css/purple.css: Removed.
        * css/yellow.css: Removed.
        * demos/index.html: Removed.
        * footer.inc: Removed.
        * header.inc: Removed.
        * images/DroseraPic.png: Removed.
        * images/blank.png: Removed.
        * images/blue-background.png: Removed.
        * images/blue-bullet.png: Removed.
        * images/download.png: Removed.
        * images/end.png: Removed.
        * images/gray-background.png: Removed.
        * images/green-background.png: Removed.
        * images/green-bullet.png: Removed.
        * images/icon-gold.png: Removed.
        * images/icon.png: Removed.
        * images/ie-nav.png: Removed.
        * images/middle.png: Removed.
        * images/nav.png: Removed.
        * images/pink-background.png: Removed.
        * images/pink-bullet.png: Removed.
        * images/purple-background.png: Removed.
        * images/purple-bullet.png: Removed.
        * images/surfin-safari.icns: Removed.
        * images/yellow-background.png: Removed.
        * images/yellow-bullet.png: Removed.
        * index.html: Removed.
        * nav.inc: Removed.
        * pngbehavior.htc: Removed.
        * projects/accessibility/index.html: Removed.
        * projects/cleanup/index.html: Removed.
        * projects/compat/index.html: Removed.
        * projects/css/index.html: Removed.
        * projects/documentation/index.html: Removed.
        * projects/dom/index.html: Removed.
        * projects/editing/index.html: Removed.
        * projects/forms/image-usemap.png: Removed.
        * projects/forms/image1.png: Removed.
        * projects/forms/image10.png: Removed.
        * projects/forms/image16.png: Removed.
        * projects/forms/index.html: Removed.
        * projects/forms/survey.html: Removed.
        * projects/goals.html: Removed.
        * projects/html/index.html: Removed.
        * projects/index.html: Removed.
        * projects/javascript/index.html: Removed.
        * projects/layout/index.html: Removed.
        * projects/mathml/index.html: Removed.
        * projects/performance/index.html: Removed.
        * projects/plugins/index.html: Removed.
        * projects/portability/index.html: Removed.
        * projects/printing/index.html: Removed.
        * projects/svg/index.html: Removed.
        * projects/svg/status.xml: Removed.
        * projects/svg/svg-status.css: Removed.
        * projects/svg/svg-status.xsl: Removed.
        * projects/webkit/index.html: Removed.
        * projects/xml/index.html: Removed.
        * projects/xslt/index.html: Removed.
        * quality/.htaccess: Removed.
        * quality/Ahem.ttf: Removed.
        * quality/bugpriorities.html: Removed.
        * quality/bugwriting.html: Removed.
        * quality/bugzilla.html: Removed.
        * quality/crashlogs.html: Removed.
        * quality/leakhunting.html: Removed.
        * quality/lifecycle.html: Removed.
        * quality/mac_reportbox.jpg: Removed.
        * quality/mac_viewtrace.jpg: Removed.
        * quality/reduction.html: Removed.
        * quality/reporting.html: Removed.
        * quality/testing.html: Removed.
        * quality/testwriting.html: Removed.
        * quality/win_installwatson.jpg: Removed.
        * quality/win_watsongui.jpg: Removed.
        * quality/win_watsoninstalled.jpg: Removed.
        * security/index.html: Removed.
        * security/security-group-members.html: Removed.
        * status.html: Removed.
        * team.html: Removed.

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Yet another attempt to fix the http blog redirects.

        Removing the blog folder should do it.

        * .htaccess:
        * blog: Removed.

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Another attempt to fix the http blog redirects.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Attempt to fix the http blog redirects.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Another attempt to fix the https redirect.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Attempt to fix the https redirect.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Fix blog.webkit.org redirects.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Add redirects for the demos folder.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Remove duplicate redirect.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        One more attempt to clean up redirects.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Avoid double slashes after redirect for directories.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Fix directory redirects some more.

        * .htaccess:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Fix directory redirect ordering.

        * .htaccess:

2015-12-03  Jonathan Davis  <jond@apple.com>

        Fixed cache logic so download data is correctly available.

        * wp-content/themes/webkit/nightly.php:

2015-12-03  Timothy Hatcher  <timothy@apple.com>

        Add some missing redirects for directories of the old site.

        * .htaccess:

2015-12-03  Jonathan Davis  <jond@apple.com>

        Fixed transient behavior when the cache plugin is enabled.

        * wp-content/themes/webkit/functions.php:
        * wp-content/themes/webkit/includes.php:
        * wp-content/themes/webkit/nightly.php:

2015-12-03  Jonathan Davis  <jond@apple.com>

        Add sub-section anchors to code style guidelines
        https://bugs.webkit.org/show_bug.cgi?id=151770

        Reviewed by Timothy Hatcher.

        * code-style.md:
        * wp-content/plugins/table-of-contents.php:
        * wp-content/themes/webkit/includes.php:
        * wp-content/themes/webkit/style.css:
        (a[name]):
        (p > a[name]::before):
        (a[name]:hover):
        (h6 a[name]):
        (.admin-bar a[name]):
        (.admin-bar p > a[name]::before):
        (.screen-reader-text):
        (.table-of-contents ul li > ul):
        (#post-4132 pre:nth-child(-n+10)):
        (#post-4132 pre:nth-child(-n+8)): Deleted.

2015-12-01  Jonathan Davis  <jond@apple.com>

        Updated favicon.ico with the new logo.

        * favicon.ico:

2015-12-01  Jonathan Davis  <jond@apple.com>

        Improved accessibility handling for the small drop-down menu.

        * wp-content/themes/webkit/scripts/global.js:

2015-12-01  Jonathan Davis  <jond@apple.com>

        Fixed font rendering. Fixed SVG rendering for Firefox.

        * wp-content/themes/webkit/images/icons.svg:
        * wp-content/themes/webkit/images/inspector.svg:
        * wp-content/themes/webkit/images/twitter.svg:
        * wp-content/themes/webkit/style.css:
        (code):
        (a[name]):
        (.screen-reader-text:focus):
        (.page-width):
        (.tile.category-web-inspector .background-image):
        (.tile.category-performance .background-image):
        (.tile.category-javascript .background-image):
        (.tile.category-css .background-image):
        (.tile.category-standards .background-image):
        (.tile.category-contributing .background-image):
        (.tile.category-storage .background-image):
        (.tile.category-layout .background-image):
        (.tile.tag-timeline .background-image):
        (.tile.tag-console .background-image):
        (.tile.tag-debugger .background-image):
        (.tile.tag-shortcuts .background-image):
        (.tile .background-image.loaded):
        (body, input, textarea, select, button): Deleted.

2015-12-01  Jonathan Davis  <jond@apple.com>

        Removed escpaes to correctly pass query string arguments.

        * .htaccess:

2015-12-01  Jonathan Davis  <jond@apple.com>

        Corrected rewrite rules to restore convenience paths.

        * .htaccess:

2015-12-01  Jonathan Davis  <jond@apple.com>

        Fixed static reference PHP syntax for compatibility with the server environment.

        * wp-content/plugins/table-of-contents.php:

2015-12-01  Jonathan Davis  <jond@apple.com>

        Fixed PHP syntax for compatibility with the server environment.

        * wp-content/plugins/social-meta.php:
        * wp-content/themes/webkit/functions.php:
        * wp-content/themes/webkit/widgets/twitter.php:

2015-12-01  Jonathan Davis  <jond@apple.com>

        Updated webkit.org to use the new theme and WordPress deployment.

        * .htaccess:
        * blog/.htaccess:
        * index.php: Added.

2015-12-01  Jonathan Davis  <jond@apple.com>

        Fixed data return format for tweets when updating cache.

        * wp-content/themes/webkit/widgets/twitter.php:

2015-12-01  Jonathan Davis  <jond@apple.com>

        Theme update to tidy styles and add a theme screenshot.

        * wp-content/themes/webkit/screenshot.png: Added.
        * wp-content/themes/webkit/style.css:
        (.featured-tile):
        (.tile .background-image):

2015-11-30  Jonathan Davis  <jond@apple.com>

        Set max-height to prevent narrow images from upscaling.

        * wp-content/themes/webkit/style.css:
        (article figure > img):
        (figure.widescreen):
        (figure.widescreen figcaption):
        (figure.widescreen img): Deleted.

2015-11-30  Jonathan Davis  <jond@apple.com>

        Added a new theme and plugins for a redesigned webkit.org.

        Reviewed by Timothy Hatcher.

        * apple-touch-icon-precomposed.png: Added.
        * code-style.md: Added.
        * commit-review.md: Added.
        * favicon.png: Added.
        * security-policy.md: Added.
        * tabicon.svg: Added.
        * wp-content: Added.
        * wp-content/index.php: Added.
        * wp-content/maintenance.php: Added.
        * wp-content/plugins: Added.
        * wp-content/plugins/analytics.php: Added.
        * wp-content/plugins/hyperlight: Added.
        * wp-content/plugins/hyperlight/hyperlight: Added.
        * wp-content/plugins/hyperlight/hyperlight.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/hyperlight.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/apache.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/blocklist.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/code.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/cpp.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/csharp.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/css.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/diff.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/filetypes: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/html.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/ini.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/iphp.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/javascript.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/php.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/python.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/syntax.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/vb.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/languages/xml.php: Added.
        * wp-content/plugins/hyperlight/hyperlight/preg_helper.php: Added.
        * wp-content/plugins/index.php: Added.
        * wp-content/plugins/social-meta.php: Added.
        * wp-content/plugins/table-of-contents.php: Added.
        * wp-content/plugins/visual-preview.php: Added.
        * wp-content/themes: Added.
        * wp-content/themes/index.php: Added.
        * wp-content/themes/webkit: Added.
        * wp-content/themes/webkit/404.php: Added.
        * wp-content/themes/webkit/444.php: Added.
        * wp-content/themes/webkit/footer.php: Added.
        * wp-content/themes/webkit/front-header.php: Added.
        * wp-content/themes/webkit/front-page.php: Added.
        * wp-content/themes/webkit/functions.php: Added.
        * wp-content/themes/webkit/header.php: Added.
        * wp-content/themes/webkit/images: Added.
        * wp-content/themes/webkit/images/download.svg: Added.
        * wp-content/themes/webkit/images/icons.svg: Added.
        * wp-content/themes/webkit/images/inspector.svg: Added.
        * wp-content/themes/webkit/images/menu-down.svg: Added.
        * wp-content/themes/webkit/images/squirrelfish-lives.svg: Added.
        * wp-content/themes/webkit/images/twitter.svg: Added.
        * wp-content/themes/webkit/images/webkit.svg: Added.
        * wp-content/themes/webkit/includes.php: Added.
        * wp-content/themes/webkit/index.php: Added.
        * wp-content/themes/webkit/loop.php: Added.
        * wp-content/themes/webkit/nightly.php: Added.
        * wp-content/themes/webkit/page.php: Added.
        * wp-content/themes/webkit/scripts: Added.
        * wp-content/themes/webkit/scripts/global.js: Added.
        * wp-content/themes/webkit/single.php: Added.
        * wp-content/themes/webkit/sitemap.php: Added.
        * wp-content/themes/webkit/status.php: Added.
        * wp-content/themes/webkit/style.css: Added.
        * wp-content/themes/webkit/team.php: Added.
        * wp-content/themes/webkit/widgets: Added.
        * wp-content/themes/webkit/widgets/icon.php: Added.
        * wp-content/themes/webkit/widgets/page.php: Added.
        * wp-content/themes/webkit/widgets/post.php: Added.
        * wp-content/themes/webkit/widgets/twitter.php: Added.

2015-11-18  Jonathan Davis  <jond@apple.com>

        Adding a maintenance file for the old WordPress blog.

        Reviewed by Timothy Hatcher.

        * blog/wp-content/maintenance.php: Added.

2015-10-26  Ryosuke Niwa  <rniwa@webkit.org>

        Add images needed for shadow DOM blog post
        https://bugs.webkit.org/show_bug.cgi?id=150549

        Reviewed by Timothy Hatcher.

        Added images.

        * blog-files/introducing-shadow-dom: Added.
        * blog-files/introducing-shadow-dom/commit-queue-contact.png: Added.
        * blog-files/introducing-shadow-dom/progress-bar.png: Added.

2015-10-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Modify the image to fit the width of the blog.

        * blog-files/web-inspector-keyboard-shortcuts/debugger-shortcuts.png:

2015-10-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Add more assets for Web Inspector Keyboard Shortcuts blog post.

        * blog-files/web-inspector-keyboard-shortcuts/icon-disable.png: Added.
        * blog-files/web-inspector-keyboard-shortcuts/icon-play.png: Added.
        * blog-files/web-inspector-keyboard-shortcuts/icon-step-in.png: Added.
        * blog-files/web-inspector-keyboard-shortcuts/icon-step-out.png: Added.
        * blog-files/web-inspector-keyboard-shortcuts/icon-step-over.png: Added.
        * blog-files/web-inspector-keyboard-shortcuts/search.png: Added.

2015-10-05  Nikita Vasilyev  <nvasilyev@apple.com>

        Add assets for Web Inspector Keyboard Shortcuts blog post.

        * blog-files/web-inspector-keyboard-shortcuts/clear-console.png: Added.
        * blog-files/web-inspector-keyboard-shortcuts/console-filters.m4v: Added.
        * blog-files/web-inspector-keyboard-shortcuts/debugger-shortcuts.png: Added.
        * blog-files/web-inspector-keyboard-shortcuts/hide-element.m4v: Added.
        * blog-files/web-inspector-keyboard-shortcuts/select-next-and-previous-tabs.m4v: Added.
        * blog-files/web-inspector-keyboard-shortcuts/toggle-split-console.m4v: Added.
        * blog-files/web-inspector-keyboard-shortcuts/tooltips.gif: Added.

2015-09-15  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add anchor tags for scroll snapping examples.

        * demos/scroll-snap/index.html: Added anchor tags.

2015-09-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add scroll snap blog post resources.

        * blog-files/scroll-snap/overflow-normal.mp4: Added.
        * blog-files/scroll-snap/snap-2d-rotated.mp4: Added.
        * blog-files/scroll-snap/snap-2d.mp4: Added.
        * blog-files/scroll-snap/snap-coordinates-centered.mp4: Added.
        * blog-files/scroll-snap/snap-coordinates.mp4: Added.
        * blog-files/scroll-snap/snap-repeat-100.mp4: Added.

2015-09-14  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add scroll snap demo directory and files.

        * demos/scroll-snap/images/1.png: Added.
        * demos/scroll-snap/images/10.png: Added.
        * demos/scroll-snap/images/11.png: Added.
        * demos/scroll-snap/images/12.png: Added.
        * demos/scroll-snap/images/13.png: Added.
        * demos/scroll-snap/images/14.png: Added.
        * demos/scroll-snap/images/15.png: Added.
        * demos/scroll-snap/images/16.png: Added.
        * demos/scroll-snap/images/2.png: Added.
        * demos/scroll-snap/images/3.png: Added.
        * demos/scroll-snap/images/4.png: Added.
        * demos/scroll-snap/images/5.png: Added.
        * demos/scroll-snap/images/6.png: Added.
        * demos/scroll-snap/images/7.png: Added.
        * demos/scroll-snap/images/8.png: Added.
        * demos/scroll-snap/images/9.png: Added.
        * demos/scroll-snap/images/bluecross.svg: Added.
        * demos/scroll-snap/images/corner.svg: Added.
        * demos/scroll-snap/index.html: Added.

2015-09-03  Matt Baker  <mattbaker@apple.com>

        Added and updated assets for Introducing the Rendering Frames Timeline blog post.

        * blog-files/rendering-frames-timeline/inspector-rendering-frames-demo.mov: Added.
        * blog-files/rendering-frames-timeline/inspector-rendering-frames-filtering.png:
        * blog-files/rendering-frames-timeline/inspector-rendering-frames.png:
        * blog-files/rendering-frames-timeline/inspector-task-filters.png:

2015-09-03  Matt Baker  <mattbaker@apple.com>

        Add assets for Introducing the Rendering Frames Timeline blog post.

        * blog-files/rendering-frames-timeline/inspector-15ms-filter-after-2x.png: Added.
        * blog-files/rendering-frames-timeline/inspector-15ms-filter-after.png: Added.
        * blog-files/rendering-frames-timeline/inspector-15ms-filter-before-2x.png: Added.
        * blog-files/rendering-frames-timeline/inspector-15ms-filter-before.png: Added.
        * blog-files/rendering-frames-timeline/inspector-frames-graph-2x.png: Added.
        * blog-files/rendering-frames-timeline/inspector-frames-graph.png: Added.
        * blog-files/rendering-frames-timeline/inspector-rendering-frames-2x.png: Added.
        * blog-files/rendering-frames-timeline/inspector-rendering-frames-filtering-2x.png: Added.
        * blog-files/rendering-frames-timeline/inspector-rendering-frames-filtering.png: Added.
        * blog-files/rendering-frames-timeline/inspector-rendering-frames.png: Added.
        * blog-files/rendering-frames-timeline/inspector-task-filters-2x.png: Added.
        * blog-files/rendering-frames-timeline/inspector-task-filters.png: Added.

2015-08-28  Jonathan Davis  <jond@apple.com>

        Add assets for Styles Sidebar Refinements in Web Inspector blog post.

        * blog-files/styles-sidebar-refinements-in-web-inspector: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/ComputedToRules-1x.png: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/ComputedToRules-2x.png: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/Filter-1x.png: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/Filter-2x.png: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/FilterSelector-1x.png: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/FilterSelector-2x.png: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/SelectorHovering-1x.png: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/SelectorHovering-2x.png: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/Tabbing.mp4: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/WarningIcon-1x.png: Added.
        * blog-files/styles-sidebar-refinements-in-web-inspector/WarningIcon-2x.png: Added.

2015-08-26  Brent Fulgham  <bfulgham@apple.com>

        Update Windows tool install instructions.

        * building/tools.html:

2015-08-24  Saam barati  <sbarati@apple.com>

        Add mp4 version of types-changing video.

        * blog-files/type-profiler-and-code-coverage-profiler/types-changing.mp4: Added.

2015-08-23  Saam barati  <sbarati@apple.com>

        Change compiler-pipeline image for type profiler and code coverage profiler blog post.

        * blog-files/type-profiler-and-code-coverage-profiler/compiler-pipeline-1x.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/compiler-pipeline-2x.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/compiler-pipeline.png: Removed.

2015-08-22  Saam barati  <sbarati@apple.com>

        Change image for type profiler and code coverage profiler blog post.

        * blog-files/type-profiler-and-code-coverage-profiler/code-coverage-1x.png:
        * blog-files/type-profiler-and-code-coverage-profiler/code-coverage-2x.png:

2015-08-22  Saam barati  <sbarati@apple.com>

        Change video for type profiler and code coverage profiler blog post.

        * blog-files/type-profiler-and-code-coverage-profiler/types-changing.mov:

2015-08-22  Saam barati  <sbarati@apple.com>

        Add 1x/2x resources for type profiler and code coverage profiler blog post.

        * blog-files/type-profiler-and-code-coverage-profiler/code-coverage-1x.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/code-coverage-2x.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/code-coverage.png: Removed.
        * blog-files/type-profiler-and-code-coverage-profiler/subtle-bug-1x.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/subtle-bug-2x.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/subtle-bug.png: Removed.
        * blog-files/type-profiler-and-code-coverage-profiler/type-profiler-api-view-1x.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/type-profiler-api-view-2x.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/type-profiler-api-view.png: Removed.
        * blog-files/type-profiler-and-code-coverage-profiler/types-everywhere-1x.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/types-everywhere-2x.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/types-everywhere.png: Removed.

2015-08-21  Saam barati  <sbarati@apple.com>

        Edit a resource for type profiler and code coverage profiler blog post.

        * blog-files/type-profiler-and-code-coverage-profiler/types-everywhere.png:

2015-08-21  Saam barati  <sbarati@apple.com>

        Add resources for type profiler and code coverage profiler blog post.

        * blog-files/type-profiler-and-code-coverage-profiler: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/code-coverage-video.mp4: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/code-coverage.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/compiler-pipeline.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/subtle-bug.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/type-profiler-api-view.png: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/types-changing.mov: Added.
        * blog-files/type-profiler-and-code-coverage-profiler/types-everywhere.png: Added.

2015-08-06  Brent Fulgham  <bfulgham@apple.com>

        Correct a typo in the explanatory text.

        * demos/backdrop-filter/index.html:

2015-08-06  Brent Fulgham  <bfulgham@apple.com>

        Add an example of backdrop-filter.

        * demos/backdrop-filter: Added.
        * demos/backdrop-filter/dynamic_poster.jpg: Added.
        * demos/backdrop-filter/dynamic_source.m4v: Added.
        * demos/backdrop-filter/index.html: Added.
        * demos/backdrop-filter/inverted_color.jpg: Added.
        * demos/backdrop-filter/multiple.jpg: Added.
        * demos/backdrop-filter/simple_blur.jpg: Added.

2015-08-06  Brent Fulgham  <bfulgham@apple.com>

        Add a poster image for the video.

        * blog-files/backdrop-filters/dynamic_poster.jpg: Added.

2015-08-06  Brent Fulgham  <bfulgham@apple.com>

        Add more media control examples.

        * blog-files/backdrop-filters/dynamic_backdrop.m4v: Added.
        * blog-files/backdrop-filters/Media_Controls_Complete_2x.jpg: Added.
        * blog-files/backdrop-filters/Media_Controls_Complete_2x.jpg: Added.

2015-08-06  Brent Fulgham  <bfulgham@apple.com>

        Add two more files for a future blog post.

        * blog-files/backdrop-filters/Media_Controls_1x.jpg: Added.
        * blog-files/backdrop-filters/Media_Controls_2x.jpg: Added.

2015-08-05  Benjamin Poulain  <benjamin@webkit.org>

        Fix the twitter links on the status page

        * status.html:

2015-08-03  Benjamin Poulain  <benjamin@webkit.org>

        Prepare screenshots for a potential blog post

        * blog-files/css-selectors-level-4/dynamic-specificity-1x.png: Added.
        * blog-files/css-selectors-level-4/dynamic-specificity-2x.png: Added.

2015-07-28  Geoffrey Garen  <ggaren@apple.com>

        SunSpider is no longer maintained
        https://bugs.webkit.org/show_bug.cgi?id=147370

        Reviewed by Michael Saboff.

        Add an indicator to show that SunSpider is no longer maintained.

        * perf/sunspider/sunspider.css:
        (#logo):
        (.topbox):
        (.bottombox):
        * perf/sunspider/sunspider.html:

2015-07-24  Myles C. Maxfield  <mmaxfield@apple.com>

        Add image for a blog post

        * blog-files/el-capitan-system-font.png: Added.

2015-07-23  Timothy Hatcher  <timothy@apple.com>

        Change some images for a blog post and add 2x images.

        * blog-files/inspector-elements-tab-2x.png: Added.
        * blog-files/inspector-elements-tab.png: Updated.
        * blog-files/inspector-network-tab-2x.png: Added.
        * blog-files/inspector-network-tab.png: Updated.
        * blog-files/inspector-tab-bar-2x.png: Added.
        * blog-files/inspector-tab-bar.png: Updated.

2015-07-23  Timothy Hatcher  <timothy@apple.com>

        Change some images for a blog post.

        * blog-files/inspector-elements-tab.png:
        * blog-files/inspector-network-tab.png:

2015-07-23  Timothy Hatcher  <timothy@apple.com>

        Add and change some images for a blog post.

        * blog-files/inspector-elements-network-tabs.png: Removed.
        * blog-files/inspector-elements-tab.png: Added.
        * blog-files/inspector-network-tab.png: Added.
        * blog-files/inspector-tab-bar.png:

2015-07-23  Brent Fulgham  <bfulgham@apple.com>

        Correct rest of the images to match.

        * blog-files/backdrop-filters/backdrop_correct_1x.jpg:
        * blog-files/backdrop-filters/backdrop_correct_2x.jpg:
        * blog-files/backdrop-filters/backdrop_invert_1x.jpg:
        * blog-files/backdrop-filters/backdrop_invert_2x.jpg:
        * blog-files/backdrop-filters/backdrop_mixed_1x.jpg:

2015-07-23  Brent Fulgham  <bfulgham@apple.com>

        Adjust image sizes to avoid page scaling.

        * blog-files/backdrop-filters/Screen_OSX_Yosemite_Finder-iCloud-WaterBg_1x.jpg:
        * blog-files/backdrop-filters/Screen_OSX_Yosemite_Finder-iCloud-WaterBg_2x.jpg:
        * blog-files/backdrop-filters/Screen_V_iOS8_ControlCenter_BlueGradient_1x.jpg:
        * blog-files/backdrop-filters/Screen_V_iOS8_ControlCenter_BlueGradient_2x.jpg:
        * blog-files/backdrop-filters/backdrop_mixed_2x.jpg:

2015-07-22  Brent Fulgham  <bfulgham@apple.com>

        Add some images needed for an upcoming blog post.

        * blog-files/backdrop-filters: Added.
        * blog-files/backdrop-filters/Screen_OSX_Yosemite_Finder-iCloud-WaterBg_1x.jpg: Added.
        * blog-files/backdrop-filters/Screen_OSX_Yosemite_Finder-iCloud-WaterBg_2x.jpg: Added.
        * blog-files/backdrop-filters/Screen_V_iOS8_ControlCenter_BlueGradient_1x.jpg: Added.
        * blog-files/backdrop-filters/Screen_V_iOS8_ControlCenter_BlueGradient_2x.jpg: Added.
        * blog-files/backdrop-filters/backdrop_correct_1x.jpg: Added.
        * blog-files/backdrop-filters/backdrop_correct_2x.jpg: Added.
        * blog-files/backdrop-filters/backdrop_invert_1x.jpg: Added.
        * blog-files/backdrop-filters/backdrop_invert_2x.jpg: Added.
        * blog-files/backdrop-filters/backdrop_mixed_1x.jpg: Added.
        * blog-files/backdrop-filters/backdrop_mixed_2x.jpg: Added.

2015-07-11  Timothy Hatcher  <timothy@apple.com>

        Add some images for a blog post.

        * blog-files/inspector-elements-network-tabs.png: Added.
        * blog-files/inspector-tab-bar.png: Added.
        * blog-files/inspector-tab-icons.svg: Added.

2015-06-30  Jonathan Davis  <jond@apple.com>

        Added WebKit feature status page to navigation.

        Reviewed by Timothy Hatcher.

        * nav.inc:

2015-06-24  Joseph Pecoraro  <pecoraro@apple.com>

        Add some images for a blog post.

        * blog-files/console-improvements/array-api.png: Added.
        * blog-files/console-improvements/collections.png: Added.
        * blog-files/console-improvements/console-messages.png: Added.
        * blog-files/console-improvements/interactivity.m4v: Added.
        * blog-files/console-improvements/iterators.png: Added.
        * blog-files/console-improvements/localStorage-api.png: Added.
        * blog-files/console-improvements/object-preview.png: Added.
        * blog-files/console-improvements/object-tree.png: Added.
        * blog-files/console-improvements/promises.png: Added.
        * blog-files/console-improvements/tooltip-1.png: Added.
        * blog-files/console-improvements/tooltip-2.png: Added.

2015-06-19  Csaba Osztrogonác  <ossy@webkit.org>

        Remove unnecessary svn:executable flags
        https://bugs.webkit.org/show_bug.cgi?id=146107

        Reviewed by Alexey Proskuryakov.

        * blog-files/inspector/css_as_authored.png: Removed property svn:executable.
        * blog-files/inspector/css_autocomplete.png: Removed property svn:executable.
        * blog-files/inspector/css_rule_diff.png: Removed property svn:executable.
        * blog-files/inspector/css_unknown_properties.png: Removed property svn:executable.
        * blog-files/inspector/warning_10x10.png: Removed property svn:executable.
        * demos/regions/pizza-regions-manifesto-regionstyling.html: Removed property svn:executable.
        * demos/regions/pizza-regions-manifesto.html: Removed property svn:executable.
        * demos/regions/yellow-pizza.jpg: Removed property svn:executable.

2015-05-20  Jon Davis  <jond@apple.com>

        Upgrading WordPress to 4.2.2 release.

        Rubber-stamped by Timothy Hatcher.

        * Websites/webkit.org/blog/:
        * Websites/webkit.org/blcd Tog/wp-admin/:
        * Websites/webkit.org/blog/wp-admin/css/:
        * Websites/webkit.org/blog/wp-admin/css/colors/:
        * Websites/webkit.org/blog/wp-admin/images/:
        * Websites/webkit.org/blog/wp-admin/includes/:
        * Websites/webkit.org/blog/wp-admin/js/:
        * Websites/webkit.org/blog/wp-admin/maint/:
        * Websites/webkit.org/blog/wp-admin/network/:
        * Websites/webkit.org/blog/wp-admin/user/:
        * Websites/webkit.org/blog/wp-includes/:
        * Websites/webkit.org/blog/wp-includes/ID3/:
        * Websites/webkit.org/blog/wp-includes/SimplePie/:
        * Websites/webkit.org/blog/wp-includes/Text/:
        * Websites/webkit.org/blog/wp-includes/certificates/:
        * Websites/webkit.org/blog/wp-includes/css/:
        * Websites/webkit.org/blog/wp-includes/fonts/:
        * Websites/webkit.org/blog/wp-includes/images/:
        * Websites/webkit.org/blog/wp-includes/js/:
        * Websites/webkit.org/blog/wp-includes/pomo/:
        * Websites/webkit.org/blog/wp-includes/theme-compat/:

2015-04-28  Yusuke Suzuki  <utatane.tea@gmail.com>

        Fix the link noted 'contribute to features' in status.html
        https://bugs.webkit.org/show_bug.cgi?id=144331

        Reviewed by Csaba Osztrogonác.

        Fix the href of the link to http://www.webkit.org/coding/contributing.html.

        * status.html:

2015-04-28  Ryuan Choi  <ryuan.choi@navercorp.com>

        Add naver to team.html
        https://bugs.webkit.org/show_bug.cgi?id=144298

        Reviewed by Gyuyoung Kim.

        * team.html:

2015-04-27  Benjamin Poulain  <bpoulain@apple.com>

        Status page: fix the email links

        * status.html:

2015-04-26  Benjamin Poulain  <benjamin@webkit.org>

        Improve the status page
        https://bugs.webkit.org/show_bug.cgi?id=144248

        Reviewed by Darin Adler.

        * status.html:
        Lots of minor changes:
        -Add a page title.
        -Do not use sync XHR. That was nice for testing but that's eveil
         and it breaks Firefox.
        -Start fetching the json files as soon as possible during page load,
         that server takes forever to respond.
        -Remove some useless CSS.
        -Get rid of mustache. That template thing was awesome but it took
         up to 600ms to fetch the file (plus it is not exactly efficient).
        -Put both the specifications and the features in the list.
         They are referencing each other with links. That seems to work pretty well.
        -Use the keywords for filtering.

2015-04-26  Benjamin Poulain  <benjamin@webkit.org>, Chris Bateman  <chrisb808@gmail.com>

        Start a basic status page on webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=143940

        Reviewed by Darin Adler.

        * status.html: Added.
        Nothing fancy, for now just show the "features" list of the two features.json

2015-04-19  Dan Bernstein  <mitz@apple.com>

        Fixed a typo.

        * coding/RefPtr.html:

2015-04-19  Darin Adler  <darin@apple.com>

        Update RefPtr documentation and deprecation
        https://bugs.webkit.org/show_bug.cgi?id=143936

        Reviewed by Andreas Kling.

        * coding/RefPtr.html: Updated.

2015-03-10  Joseph Pecoraro  <pecoraro@apple.com>

        Fix warning about loading insecure content from secure webkit.org/blog
        https://bugs.webkit.org/show_bug.cgi?id=142545

        Reviewed by Mark Rowe.

        * blog/wp-content/themes/webkit/footer.php:
        Use an "https" URL for the subresource, instead of "http".

2015-02-20  Alexey Proskuryakov  <ap@apple.com>

        Remove svn:keywords property.

        As far as I can tell, the property had no effect on any of these files, but also,
        when it has effect it's likely harmful.

        * demos/srcset/index.html: Removed property svn:keywords.
        * specs/index.html: Removed property svn:keywords.

2015-02-13  Csaba Osztrogonác  <ossy@webkit.org>

        Unreviewed, remove empty directories.

        * blog/wp-includes/js/codepress: Removed.

2015-02-03  Byungseon Shin  <sun.shin@webkit.org>

        Add LG Electronics to team.html
        https://bugs.webkit.org/show_bug.cgi?id=141227

        Reviewed by Andreas Kling.

        * team.html:

2015-01-30  Chris Dumez  <cdumez@apple.com>

        Add "Singleton pattern" section to the WebKit coding style
        https://bugs.webkit.org/show_bug.cgi?id=141040

        Reviewed by Ryosuke Niwa.

        Add "Singleton pattern" section to the WebKit coding style to document
        what was discussed on webkit-dev:
        https://lists.webkit.org/pipermail/webkit-dev/2015-January/027199.html

        * coding/coding-style.html:

2015-01-27  Daniel Bates  <dabates@apple.com>

        Update Xcode requirement and add instructions to build, run, and debug WebKit for iOS Simulator

        Reviewed by David Kilzer.

        * building/build.html: Added instructions to build WebKit for iOS Simulator.
        * building/debug.html: Added some instructions to debug the UIProcess and WebProcess
        in the iOS Simulator using command line tools. We should look to add Xcode instructions
        and simplify these steps once we teach debug-safari about the iOS Simulator.
        * building/run.html: Added remark to run Safari in the iOS Simulator.
        * building/tools.html: Require Xcode 6.1.1 (for the iOS 8.1 SDK) to build for iOS Simulator.
        * css/main.css: Define the .ios-instructions class with the same style as other .*-instructions classes.

2014-09-27  Dan Bernstein  <mitz@apple.com>

        WebKit top of tree sources won't build in 10.9 w/ Xcode 6.0.1
        https://bugs.webkit.org/show_bug.cgi?id=137053

        Reviewed by Mark Rowe.

        * building/build.html: Removed instructions how to work around this bug, now that it’s fixed.

2014-09-26  Alexey Proskuryakov  <ap@apple.com>

        WebKit top of tree sources won't build in 10.9 w/ Xcode 6.0.1
        https://bugs.webkit.org/show_bug.cgi?id=137053

        Patch by David Gatwood. Reviewed, tweaked and landed by Alexey Proskuryakov.

        Explain that to build from Xcode, one needs to build from command line once first.

        Removed a Windows section that explained how to launch cygwin shell, which was
        silly given that we then link to a long document explaining further steps.

        * building/build.html:

2014-09-24  Langó László  <llango.u-szeged@partner.samsung.com>

        Update the list of u-szeged contributors.

        Rubber-stamped by Csaba Osztrogonác <ossy@webkit.org>.

        * team.html:

2014-09-18  Dean Jackson  <dino@apple.com>

        Expand the srcset demo to have 3x and 4x images.

        Unreviewed.

        * demos/srcset/image-1x.png:
        * demos/srcset/image-2x.png:
        * demos/srcset/image-3x.png: Added.
        * demos/srcset/image-4x.png: Added.
        * demos/srcset/index.html:

2014-08-27  Conrad Shultz  <conrad_shultz@apple.com>

        webkit.org is inconsistent in uses of "OS X" vs. "Mac OS X"
        https://bugs.webkit.org/show_bug.cgi?id=136315

        Reviewed by Mark Rowe.

        * building/checkout.html:
        * building/debug-mac-uiprocess.html:
        * building/debug.html:
        * building/run.html:
        * building/tools.html:
        * contact.html:
        * index.html:
        * projects/javascript/index.html:
        * projects/svg/index.html:
        * quality/bugwriting.html:
        * quality/crashlogs.html:
        * quality/leakhunting.html:
        * quality/lifecycle.html:
        * quality/testing.html:

2014-08-27  László Langó  <llango.u-szeged@partner.samsung.com>

        http://webkit.org/coding/coding-style.html should mention check-webkit-style.
        https://bugs.webkit.org/show_bug.cgi?id=31993

        Reviewed by Darin Adler.

        Based on patch by Peter Szanka <h868064@stud.u-szeged.hu>

        * coding/contributing.html:
        Extend the description of code style guidelines with check-webkit-style in the contributing.html.

2014-08-18  Bem Jones-Bey  <bjonesbe@adobe.com>

        Remove people that have left Adobe from Security Contact list
        https://bugs.webkit.org/show_bug.cgi?id=135256

        Reviewed by Alexey Proskuryakov.

        * security/security-group-members.html:

2014-08-06  peavo@outlook.com  <peavo@outlook.com>

        [Win] Build error when OFFICIAL_BUILD != 1.
        https://bugs.webkit.org/show_bug.cgi?id=135613

        Reviewed by Alex Christensen.

        Added python installation as a required step before building on Windows.

        * building/tools.html:

2014-07-24  Bem Jones-Bey  <bjonesbe@adobe.com>

        Committers should mail webkit-committers not webkit-reviewers for reactivation
        https://bugs.webkit.org/show_bug.cgi?id=135203

        Reviewed by Ryosuke Niwa.

        Only reviewers can send mail to webkit-reviewers. Amend the policy so that committers should
        send mail to webkit-committers instead of webkit-reviewers.

        * coding/commit-review-policy.html:

2014-07-15  Alex Christensen  <achristensen@webkit.org>

        Make css jit benchmark work on IE11.
        https://bugs.webkit.org/show_bug.cgi?id=134956

        Reviewed by Benjamin Poulain.

        * blog-files/css-jit-introduction/html5-single-page-microbenchmark.html:
        Remove an iframe which caused IE11 to try to open content as a URL.

2014-07-08  Bem Jones-Bey  <bjonesbe@adobe.com>

        Update policy for Inactive Committer and Reviewer status
        https://bugs.webkit.org/show_bug.cgi?id=134403

        Reviewed by Nico Weber.

        * coding/commit-review-policy.html:

2014-06-26  Vivek Galatage  <vivek.vg@samsung.com>

        Remove Qt instructions from http://www.webkit.org/building/tools.html
        https://bugs.webkit.org/show_bug.cgi?id=134384

        Reviewed by Tim Horton.

        * building/tools.html:
        * css/main.css:
        (.mac-instructions, .unix-instructions, .windows-instructions, .gtk-instructions, .efl-instructions):
        (.mac-instructions, .unix-instructions, .windows-instructions, .gtk-instructions, .qt-instructions, .efl-instructions): Deleted.

2014-06-25  Brent Fulgham  <bfulgham@apple.com>

        [Win] Whoops! DirectX SDK is still needed.

        * building/tools.html: Put DirectX instruction back.

2014-06-24  Brent Fulgham  <bfulgham@apple.com>

        [Win] Remove some out-of-date stuff from our instructions.
        https://bugs.webkit.org/show_bug.cgi?id=134282

        Reviewed by Tim Horton.

        * building/build.html: Remove reference to "Platform SDK" which we don't manuall
        install anymore (it's part of Visual Studio 2013).
        * building/tools.html: We no longer need QuickTime SDK, QuickTime Player, or
        the DirectX SDK.

2014-06-23  Ryosuke Niwa  <rniwa@webkit.org>

        Drop the cross organizational support requirement from reviewer nomination policy
        https://bugs.webkit.org/show_bug.cgi?id=134240

        Reviewed by Gyuyoung Kim.

        Removed.

        * coding/commit-review-policy.html:

2014-05-13  Filip Pizlo  <fpizlo@apple.com>

        Updated the files to have the right width.

        * blog-files/ftl-jit/dfg_pipeline.png:
        * blog-files/ftl-jit/four_tier_performance.png:
        * blog-files/ftl-jit/ftl_asm_bench_performance.png:
        * blog-files/ftl-jit/ftl_pipeline.png:
        * blog-files/ftl-jit/ftl_timeline.png:
        * blog-files/ftl-jit/polymorphic_inlining_performance.png:
        * blog-files/ftl-jit/polyvariance.png:
        * blog-files/ftl-jit/polyvariant_devirtualization_performance.png:
        * blog-files/ftl-jit/three_tier_performance.png:

2014-05-13  Filip Pizlo  <fpizlo@apple.com>

        Add some illustrations about how JSC works.

        * blog-files/ftl-jit: Added.
        * blog-files/ftl-jit/dfg_pipeline.png: Added.
        * blog-files/ftl-jit/four_tier_performance.png: Added.
        * blog-files/ftl-jit/ftl_asm_bench_performance.png: Added.
        * blog-files/ftl-jit/ftl_pipeline.png: Added.
        * blog-files/ftl-jit/ftl_timeline.png: Added.
        * blog-files/ftl-jit/object_model.png: Added.
        * blog-files/ftl-jit/polymorphic_inlining_performance.png: Added.
        * blog-files/ftl-jit/polyvariance.png: Added.
        * blog-files/ftl-jit/polyvariant_devirtualization_performance.png: Added.
        * blog-files/ftl-jit/three_tier_performance.png: Added.
        * blog-files/ftl-jit/three_tiers.png: Added.

2014-05-12  Benjamin Poulain  <benjamin@webkit.org>

        Add potential illustrations for a potential future blog post about the viewport meta tag

        * blog-files/simple-viewport-configuration: Added.
        * blog-files/simple-viewport-configuration/860_viewport.html: Added.
        * blog-files/simple-viewport-configuration/blog_with_viewport.png: Added.
        * blog-files/simple-viewport-configuration/blog_without_viewport.png: Added.
        * blog-files/simple-viewport-configuration/default_viewport.html: Added.
        * blog-files/simple-viewport-configuration/horizontal_design.html: Added.
        * blog-files/simple-viewport-configuration/inspector.png: Added.
        * blog-files/simple-viewport-configuration/report_size.js: Added.

2014-04-29  Alex Christensen  <achristensen@webkit.org>

        [WinCairo] Switch video from GStreamer to Media Foundation.
        https://bugs.webkit.org/show_bug.cgi?id=132358

        Reviewed by Brent Fulgham.

        * building/tools.html:
        Removed requirement of installing GStreamer.

2014-04-18  Bem Jones-Bey  <bjonesbe@adobe.com>

        Add mention of Safari Debug menu and finding out the WebProcess that corresponds to a tab
        https://bugs.webkit.org/show_bug.cgi?id=131791

        Reviewed by Sam Weinig.

        * building/debug.html:

2014-03-28  James Craig  <jcraig@apple.com>

        Web Inspector: AXI: support for live regions
        https://bugs.webkit.org/show_bug.cgi?id=130725

        Reviewed by Timothy Hatcher.

        Demo update to show off the new Inspector support for live regions.

        * blog-files/aria1.0/combobox_with_live_region_status.html:

2014-03-27  James Craig  <jcraig@apple.com>

        Web Inspector: AXI: expose selectedChildNodeIds of list boxes, tree controls, etc., and reconcile UI with childNodeIds
        https://bugs.webkit.org/show_bug.cgi?id=130827

        Reviewed by Timothy Hatcher.

        Updated demo files with attr refresh to show off selected children changing.
        Long term fix will be http://webkit.org/b/130883

        * blog-files/aria1.0/combobox_with_live_region_status.html:

2014-03-25  James Craig  <jcraig@apple.com>

        Blog-files: combobox demo needs aria-expanded support
        https://bugs.webkit.org/show_bug.cgi?id=130766

        Reviewed by Chris Fleizach.

        * blog-files/aria1.0/combobox_with_live_region_status.html: Added missing aria-expanded.

2014-03-25  Benjamin Poulain  <bpoulain@apple.com>

        Add illustrations for a potential blog post

        First version, let see how that works out.

        * blog-files/css-jit-introduction: Added.
        * blog-files/css-jit-introduction/clicktostart.js: Added.
        * blog-files/css-jit-introduction/css-jit-illustration.html: Added.
        * blog-files/css-jit-introduction/html5-single-page-microbenchmark.html: Added.
        * blog-files/css-jit-introduction/old-selectorchecker-illustration.html: Added.
        * blog-files/css-jit-introduction/timing-illustration-eight-run.svg: Added.
        * blog-files/css-jit-introduction/timing-illustration-five-run.svg: Added.
        * blog-files/css-jit-introduction/timing-illustration-one-run.svg: Added.

2014-03-20  James Craig  <jcraig@apple.com>

        Sample code for potential ARIA blog post.
        https://bugs.webkit.org/show_bug.cgi?id=130548

        Rubber-stamped by Chris Fleizach.

        * blog-files/aria1.0: Added.
        * blog-files/aria1.0/africa_large.svg: Added.
        * blog-files/aria1.0/combobox_with_live_region_status.html: Added.
        * blog-files/aria1.0/roaming_tabindex: Added.
        * blog-files/aria1.0/roaming_tabindex/css: Added.
        * blog-files/aria1.0/roaming_tabindex/css/img: Added.
        * blog-files/aria1.0/roaming_tabindex/css/img/buttons.png: Added.
        * blog-files/aria1.0/roaming_tabindex/css/img/icons.png: Added.
        * blog-files/aria1.0/roaming_tabindex/css/screen.css: Added.
        * blog-files/aria1.0/roaming_tabindex/final.html: Added.
        * blog-files/aria1.0/roaming_tabindex/js: Added.
        * blog-files/aria1.0/roaming_tabindex/js/aria.js: Added.
        * blog-files/aria1.0/roaming_tabindex/js/init.js: Added.
        * blog-files/aria1.0/roaming_tabindex/js/prototype.js: Added.

2014-03-14  Maciej Stachowiak  <mjs@apple.com>

        Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
        https://bugs.webkit.org/show_bug.cgi?id=130276
        <rdar://problem/16266927>

        Reviewed by Simon Fraser.

        * blog/wp-content/textfield_screenshot.jpg:
        * misc/WebKitDetect.html:
        * misc/WebKitDetect.js:
        * perf/sunspider-0.9.1/sunspider-0.9.1/driver.html:
        * perf/sunspider-0.9.1/sunspider-0.9.1/results.html:
        * perf/sunspider-0.9.1/sunspider-0.9.1/sunspider-test-contents.js:
        * perf/sunspider-0.9.1/sunspider-0.9/driver.html:
        * perf/sunspider-0.9.1/sunspider-0.9/results.html:
        * perf/sunspider-0.9.1/sunspider-0.9/sunspider-test-contents.js:
        * perf/sunspider-0.9.1/sunspider-analyze-results.js:
        * perf/sunspider-0.9.1/sunspider-compare-results.js:
        * perf/sunspider-0.9/3d-cube.html:
        * perf/sunspider-0.9/3d-morph.html:
        * perf/sunspider-0.9/3d-raytrace.html:
        * perf/sunspider-0.9/access-binary-trees.html:
        * perf/sunspider-0.9/access-fannkuch.html:
        * perf/sunspider-0.9/access-nbody.html:
        * perf/sunspider-0.9/access-nsieve.html:
        * perf/sunspider-0.9/bitops-3bit-bits-in-byte.html:
        * perf/sunspider-0.9/bitops-bits-in-byte.html:
        * perf/sunspider-0.9/bitops-bitwise-and.html:
        * perf/sunspider-0.9/bitops-nsieve-bits.html:
        * perf/sunspider-0.9/controlflow-recursive.html:
        * perf/sunspider-0.9/crypto-aes.html:
        * perf/sunspider-0.9/crypto-md5.html:
        * perf/sunspider-0.9/crypto-sha1.html:
        * perf/sunspider-0.9/date-format-tofte.html:
        * perf/sunspider-0.9/date-format-xparb.html:
        * perf/sunspider-0.9/math-cordic.html:
        * perf/sunspider-0.9/math-partial-sums.html:
        * perf/sunspider-0.9/math-spectral-norm.html:
        * perf/sunspider-0.9/regexp-dna.html:
        * perf/sunspider-0.9/string-base64.html:
        * perf/sunspider-0.9/string-fasta.html:
        * perf/sunspider-0.9/string-tagcloud.html:
        * perf/sunspider-0.9/string-unpack-code.html:
        * perf/sunspider-0.9/string-validate-input.html:
        * perf/sunspider-0.9/sunspider-analyze-results.js:
        * perf/sunspider-0.9/sunspider-compare-results.js:
        * perf/sunspider-0.9/sunspider-driver.html:
        * perf/sunspider-0.9/sunspider-record-result.js:
        * perf/sunspider-0.9/sunspider-results.html:
        * perf/sunspider-1.0.1/sunspider-1.0.1/driver.html:
        * perf/sunspider-1.0.1/sunspider-1.0.1/results.html:
        * perf/sunspider-1.0.1/sunspider-1.0.1/sunspider-test-contents.js:
        * perf/sunspider-1.0.1/sunspider-analyze-results.js:
        * perf/sunspider-1.0.1/sunspider-compare-results.js:
        * perf/sunspider-1.0.1/sunspider.html:
        * perf/sunspider-1.0.2/sunspider-1.0.2/driver.html:
        * perf/sunspider-1.0.2/sunspider-1.0.2/results.html:
        * perf/sunspider-1.0.2/sunspider-1.0.2/sunspider-test-contents.js:
        * perf/sunspider-1.0.2/sunspider-analyze-results.js:
        * perf/sunspider-1.0.2/sunspider-compare-results.js:
        * perf/sunspider-1.0.2/sunspider.html:
        * perf/sunspider-1.0/sunspider-1.0/driver.html:
        * perf/sunspider-1.0/sunspider-1.0/results.html:
        * perf/sunspider-1.0/sunspider-1.0/sunspider-test-contents.js:
        * perf/sunspider-1.0/sunspider-analyze-results.js:
        * perf/sunspider-1.0/sunspider-compare-results.js:
        * perf/sunspider-1.0/sunspider.html:
        * perf/sunspider/sunspider.html:
        * perf/sunspider/versions.html:
        * quality/reporting.html:

2014-03-03  Ryosuke Niwa  <rniwa@webkit.org>

        Use DYEBench v0.9 by default.

        Rubber-stamped by Benjamin Poulain.

        * perf/DoYouEvenBench/index.html:

2014-02-27  Darin Adler  <darin@apple.com>

        Some small modernizing tweaks to the coding style guide
        https://bugs.webkit.org/show_bug.cgi?id=129427

        Reviewed by Alexey Proskuryakov.

        My intent here was originally to do the nullptr style guide update, but that was already done.
        I did some other improvements. There's still quite a bit to do -- the guide is out of date in
        a number of subtle ways.

        * coding/coding-style.html: Change "left side operator" example to be a more modern example
        without non-WebKit-style abbreviations and such. Use auto& instead of const auto& in for loop
        example, since that's normally preferred. Changed section title to say "zero" instead of "0".
        Use words instead of abbreviations in code examples. Show that a modern C++ for loop is preferred
        over index iteration in vector iteration example and also showed use of unsigned rather than
        size_t since that is almost always what we want. Eliminated the use of PassOwnPtr in the "return
        a newly created object" example. Use references instead of pointers in one example.

2014-02-26  Julien Brianceau  <jbriance@cisco.com>

        Add Cisco to team.html
        https://bugs.webkit.org/show_bug.cgi?id=129405

        Reviewed by Andreas Kling.

        * team.html:

2014-02-26  Bem Jones-Bey  <bjonesbe@adobe.com>

        Update style guide to use nullptr instead of 0 for C++ null pointers.
        https://bugs.webkit.org/show_bug.cgi?id=129413

        Reviewed by Ryosuke Niwa.

        * coding/coding-style.html:

2014-02-10  Bem Jones-Bey  <bjonesbe@adobe.com>

        Change tools.html to say Xcode 5 is required to build
        https://bugs.webkit.org/show_bug.cgi?id=128545

        Reviewed by Andreas Kling.

        The Mac port doesn't build with Xcode 4.6 anymore, so update to tell
        people to get Xcode 5. It looks like Xcode 5 doesn't have the command
        line tools in the downloads pane anymore, so direct folks to use
        xcode-select to install the command line tools as well.

        * building/tools.html:

2014-01-17  Ryosuke Niwa  <rniwa@webkit.org>

        Host DoYouEvenBench on webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=127185

        Reviewed by Benjamin Poulain.

        The previous patch didn't quite work due to cross-origin restrictions.
        Simply add a hyperlink to a trac page.

        * perf/DoYouEvenBench/index.html:

2014-01-17  Ryosuke Niwa  <rniwa@webkit.org>

        Host DoYouEvenBench on webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=127185

        Reviewed by Benjamin Poulain.

        Added webkit.org/perf/DoYouEvenBench.

        * perf/DoYouEvenBench: Added.
        * perf/DoYouEvenBench/index.html: Copied from PerformanceTests/DoYouEvenBench/Full.html.

2014-01-03  Alex Christensen  <achristensen@webkit.org>

        Added GStreamer to list of required tools for compiling webkit.
        https://bugs.webkit.org/show_bug.cgi?id=126319

        Reviewed by Philippe Normand.

        * building/tools.html:
        Mentioned that QuickTime and QuickTime SDK are only required for AppleWin.
        Added GStreamer installers to list of required tools for WinCairo.

2013-12-25  Ryosuke Niwa  <rniwa@webkit.org>

        Add a description about webkit-patch setup-git-clone to checkout.html
        https://bugs.webkit.org/show_bug.cgi?id=126217

        Reviewed by Philippe Normand.

        Added.

        * building/checkout.html:

2013-12-13  Roger Fong  <roger_fong@apple.com>

        Update build instructions for Windows following upgrade to VS2013.

        * building/tools.html:

2013-11-30  Mark Rowe  <mrowe@apple.com>

        <https://webkit.org/b/125027> Update the analytics account used by webkit.org

        Switch to a Google Analytics id that's accessible to someone that's involved with the WebKit project.

        Reviewed by Sam Weinig.

        * footer.inc: Remove the old analytics code.
        * header.inc: Add the new stuff.

2013-10-29  Beth Dakin  <bdakin@apple.com>

        Just updating the sample code for this potential blog post.

        * blog-files/regions/pizza-is-amazing.png: Replaced.
        * blog-files/regions/unstyled-article.png: Replaced.
        * demos/regions/pizza-regions-manifesto-regionstyling.html:
        * demos/regions/pizza-regions-manifesto.html:

2013-10-18  Tibor Meszaros  <tmeszaros@inf.u-szeged.hu>

        Mixed content error when accessing webkit.org/team.html over https
        https://bugs.webkit.org/show_bug.cgi?id=123020

        Reviewed by Alexey Proskuryakov.

        When the webkit.org/team.html page is accessed over https most browsers report
        Mixed Content error, which is caused by the fact that the contributos.json file
        is accessed over a plain http connection and not https.

        * team.html:

2013-10-18  Tibor Meszaros  <tmeszaros@inf.u-szeged.hu>

        Cleanup webkit.org/team.html
        https://bugs.webkit.org/show_bug.cgi?id=123022

        Reviewed by Alexey Proskuryakov.

        Removed the annoteWithWikiData function, because data it tries to fetch does not exists.

        * team.html:

2013-10-16  Geoffrey Garen  <ggaren@apple.com>

        Publish SunSpider 1.0.2
        https://bugs.webkit.org/show_bug.cgi?id=122923

        Reviewed by Darin Adler.

        * perf/sunspider/sunspider.html:
        * perf/sunspider/versions.html:

2013-10-08  Geoffrey Garen  <ggaren@apple.com>

        Refined power management in SunSpider 1.0.2
        https://bugs.webkit.org/show_bug.cgi?id=122525

        Reviewed by Gavin Barraclough.

        Sync'd sunspider-1.0.2 to PerformanceTests/SunSpider/hosted/sunspider-1.0.2.

        * perf/sunspider-1.0.2/sunspider-1.0.2/driver.html:
        * perf/sunspider-1.0.2/sunspider-1.0.2/sunspider-test-contents.js:
        * perf/sunspider-1.0.2/sunspider.css:
        (#frameparent):
        (#countdown):

2013-10-02  Geoffrey Garen  <ggaren@apple.com>

        Sync'd sunspider-1.0.2 to PerformanceTests/SunSpider/hosted/sunspider-1.0.2.

        * perf/sunspider-1.0.2/sunspider-1.0.2/driver.html:
        * perf/sunspider-1.0.2/sunspider-1.0.2/sunspider-test-contents.js:

2013-09-26  Geoffrey Garen  <ggaren@apple.com>

        Fixed a version number string in SunSpider 1.0.2
        https://bugs.webkit.org/show_bug.cgi?id=122004

        Reviewed by Gavin Barraclough.

        * perf/sunspider-1.0.2/sunspider-1.0.2/results.html: 1.0.2!

2013-09-26  Geoffrey Garen  <ggaren@apple.com>

        Tentative SunSpider 1.0.2
        https://bugs.webkit.org/show_bug.cgi?id=122002

        Reviewed by Gavin Barraclough.

        See comments in PerformanceTests/SunSpider.

        * perf/sunspider-1.0.2: Added.

2013-09-20  Mark Rowe  <mrowe@apple.com>

        <https://webkit.org/b/90090> build-webkit should verify that your tools are up-to-date

        Update references on webkit.org to mention Xcode 4.6 as the minimum version.

        Reviewed by David Kilzer.

        * building/debug-mac-uiprocess.html:
        * building/tools.html:

2013-09-19  Dan Bernstein  <mitz@apple.com>

        Add a style guideline regarding spacing in range-based for loops
        https://bugs.webkit.org/show_bug.cgi?id=121620

        Reviewed by Anders Carlsson.

        * coding/coding-style.html: Added the guideline that spaces should be placed
        around the colon in a range-based for loop.

2013-09-10  Beth Dakin  <bdakin@apple.com>

        Adding another screenshot for a potential blog post.

        * blog-files/regions/unstyled-article.png: Added.

2013-09-09  Roger Fong  <roger_fong@apple.com>

        Update build instructions for Apple Windows port to include cygwin php install steps.

        * building/tools.html:

2013-09-04  Beth Dakin  <bdakin@apple.com>

        Fixing a typo in demo files and screenshot.

        * blog-files/regions/pizza-is-amazing.png: Replaced.
        * demos/regions/pizza-regions-manifesto-regionstyling.html:
        * demos/regions/pizza-regions-manifesto.html:

2013-09-04  Beth Dakin  <bdakin@apple.com>

        Upload demo and images for a potential blog post.

        * blog-files/regions: Added.
        * blog-files/regions/pizza-is-amazing.png: Added.
        * demos/regions: Added.
        * demos/regions/pizza-regions-manifesto-regionstyling.html: Added.
        * demos/regions/pizza-regions-manifesto.html: Added.
        * demos/regions/yellow-pizza.jpg: Added.

2013-09-03  Benjamin Poulain  <benjamin@webkit.org>

        Fix the recommended testing platform on the website

        Rubberstamped by Enrica Casucci.

        * quality/testing.html:

2013-08-08  Benjamin Poulain  <bpoulain@apple.com>

        Fix webkit.org content overflowing their content box

        Rubberstamped by Simon Fraser.

        More fixes to have webkit.org show properly on iPad and iPhone.

        * blog/wp-content/themes/webkit/header.php:
        Add the correct viewport width for the blog.

        * building/debug.html:
        * building/launch-debugger-vs2010-small.png: Added.
        * building/set-debugging-properties-vs2010-small.png: Added.
        Fix the images to make them fit in the page.

        * coding/adding-features.html:
        Using <pre> for the example of email just make it looks like our code examples.
        Change the source to use <blockquote> so that the text can reflow to the content box.
        * css/main.css:
        (.code, pre, tt, code):
        Scroll the content when it overflows the box for code and pre.

2013-08-08  Benjamin Poulain  <benjamin@webkit.org>

        Give a smaller viewport to webkit.org on devices

        Rubberstamped by Simon Fraser.

        The CSS of WebKit.org layout the content on 615px + a right margin of
        215px + a left margin of 20px. The total layout width is 850px.

        The standard viewport size on mobile devices is 980px. This leaves a gap
        on the right side of the content when opening the size on iPhone/iPad.

        This patch changes the layout width to be 860 to display more content on devices
        while keeping a little margin.

        * header.inc:

2013-08-08  Cosmin Truta  <ctruta@blackberry.com>

        SunSpider: Move the 3d-morph fix from version 1.0 to version 1.0.1
        https://bugs.webkit.org/show_bug.cgi?id=117993

        Reviewed by George Staikos.

        * perf/sunspider-1.0.1/json2.js: Added.
        * perf/sunspider-1.0.1/sunspider-1.0.1/driver.html: Added.
        * perf/sunspider-1.0.1/sunspider-1.0.1/results.html: Added.
        * perf/sunspider-1.0.1/sunspider-1.0.1/sunspider-test-contents.js: Added.
        * perf/sunspider-1.0.1/sunspider-1.0.1/sunspider-test-prefix.js: Added.
        * perf/sunspider-1.0.1/sunspider-analyze-results.js: Added.
        * perf/sunspider-1.0.1/sunspider-compare-results.js: Added.
        * perf/sunspider-1.0.1/sunspider.css: Added.
        * perf/sunspider-1.0.1/sunspider.html: Added.
        * perf/sunspider/sunspider.html: Updated to version 1.0.1.
        * perf/sunspider/versions.html: Updated to version 1.0.1.

2013-08-07  Benjamin Poulain  <benjamin@webkit.org>

        Update the images for the blog size-matters

        * blog-files/size-matters/JavaScriptCore-relative-binary-growth.png: Added.
        * blog-files/size-matters/WebCore-relative-binary-growth.png: Added.
        * blog-files/size-matters/WebKit-relative-binary-growth.png: Added.

2013-08-05  Dean Jackson  <dino@apple.com>

        Move previous commit into /demos.

        * demos/srcset/image-1x.png: Renamed from Websites/webkit.org/blog-files/srcset/image-1x.png.
        * demos/srcset/image-2x.png: Renamed from Websites/webkit.org/blog-files/srcset/image-2x.png.
        * demos/srcset/image-src.png: Renamed from Websites/webkit.org/blog-files/srcset/image-src.png.
        * demos/srcset/index.html: Renamed from Websites/webkit.org/blog-files/srcset/index.html.

2013-08-05  Dean Jackson  <dino@apple.com>

        Upload example for a blog post.

        * blog-files/srcset/image-1x.png: Added.
        * blog-files/srcset/image-2x.png: Added.
        * blog-files/srcset/image-src.png: Added.
        * blog-files/srcset/index.html: Added.

2013-07-31  Benjamin Poulain  <benjamin@webkit.org>

        Upload images for a potential blog post

        * blog-files/size-matters: Added.
        * blog-files/size-matters/JavaScript-growth.png: Added.
        * blog-files/size-matters/WebCore-growth-baseline.png: Added.
        * blog-files/size-matters/WebCore-growth.png: Added.
        * blog-files/size-matters/WebKit-growth.png: Added.

2013-07-14  Kwang Yul Seo  <skyul@company100.net>

        Add Company100 to team.html
        https://bugs.webkit.org/show_bug.cgi?id=118633

        Reviewed by Andreas Kling.

        * team.html:

2013-07-11  Bruno de Oliveira Abinader  <bruno.d@partner.samsung.com>

        Add 'partner.samsung.com' to domain affiliations
        https://bugs.webkit.org/show_bug.cgi?id=118580

        Reviewed by Antonio Gomes.

        * team.html:

2013-07-01  Benjamin Poulain  <benjamin@webkit.org>

        Add screenshot of the inspector color picker for the blog

        * blog-files/last-week-in-webkit: Added.
        * blog-files/last-week-in-webkit/Inspector_color_picker.png: Added.

2013-06-27  Roger Fong  <roger_fong@apple.com>

        Update required tools for Windows instructions.

        * building/tools.html:

2013-06-18  Denis Nomiyama  <d.nomiyama@samsung.com>

        The page title of technical-articles.html is incorrect.
        https://bugs.webkit.org/show_bug.cgi?id=117727

        Reviewed by Ryosuke Niwa.

        Changed the page title of technical-articles.html to "WebKit Technical Articles".

        * coding/technical-articles.html:

2013-06-14  Timothy Hatcher  <timothy@apple.com>

        Shrink larger images to fit the width of the blog.

        * blog-files/new-inspector/hero-labeled.png:
        * blog-files/new-inspector/hero.png:

2013-06-12  Roger Fong  <roger_fong@apple.com>

        Update webkit.org build instructions for Apple Windows port.
        https://bugs.webkit.org/show_bug.cgi?id=117563.

        Reviewed by Brent Fulgham.

        * building/build.html:
        * building/debug.html:
        * building/launch-debugger-vs2005.png: Removed.
        * building/launch-debugger-vs2010.png: Copied from webkit.org/building/launch-debugger-vs2005.png.
        * building/set-as-startup-project-vs2005.png: Removed.
        * building/set-as-startup-project-vs2010.png: Copied from webkit.org/building/set-as-startup-project-vs2005.png.
        * building/set-debugging-properties-vs2005.png: Removed.
        * building/set-debugging-properties-vs2010.png: Copied from webkit.org/building/set-debugging-properties-vs2005.png.
        * building/tools.html:

2013-06-12  Timothy Hatcher  <timothy@apple.com>

        Add new Web Inspector images for a blog post.

        * blog-files/new-inspector/activity-viewer.png: Added.
        * blog-files/new-inspector/codemirror.png: Added.
        * blog-files/new-inspector/console.png: Added.
        * blog-files/new-inspector/hero-labeled.png: Added.
        * blog-files/new-inspector/hero.png: Added.
        * blog-files/new-inspector/layer-borders.png: Added.
        * blog-files/new-inspector/layers.png: Added.
        * blog-files/new-inspector/navigation-bar.png: Added.
        * blog-files/new-inspector/open-sign.png: Added.
        * blog-files/new-inspector/reasons.png: Added.
        * blog-files/new-inspector/save.png: Added.
        * blog-files/new-inspector/source-map.png: Added.
        * blog-files/new-inspector/styles.png: Added.
        * blog-files/new-inspector/toolbar-context-menu.png: Added.
        * blog-files/new-inspector/toolbar-docked.png: Added.
        * blog-files/new-inspector/toolbar.png: Added.

2013-05-25  Bem Jones-Bey  <bjonesbe@adobe.com>

        Broken link to committers list on contributing web page
        https://bugs.webkit.org/show_bug.cgi?id=116722

        Reviewed by Andreas Kling.

        * coding/contributing.html:
        Changed broken link to point to the team page instead.

2013-05-24  Bem Jones-Bey  <bjonesbe@adobe.com>

        Make team.html have each contributor's area of expertise
        https://bugs.webkit.org/show_bug.cgi?id=116737

        Reviewed by Benjamin Poulain.

        * team.html:
        Update to use the new expertise field in contributors.json.

2013-04-30  Filip Pizlo  <fpizlo@apple.com>

        Release SunSpider 1.0

        Rubber stamped by Maciej Stachowiak.

        * perf/sunspider-1.0: Added.
        * perf/sunspider-1.0/json2.js: Added.
        (.):
        * perf/sunspider-1.0/sunspider-1.0: Added.
        * perf/sunspider-1.0/sunspider-1.0/driver.html: Added.
        * perf/sunspider-1.0/sunspider-1.0/results.html: Added.
        * perf/sunspider-1.0/sunspider-1.0/sunspider-test-contents.js: Added.
        * perf/sunspider-1.0/sunspider-1.0/sunspider-test-prefix.js: Added.
        * perf/sunspider-1.0/sunspider-analyze-results.js: Added.
        (computeItemTotals):
        (computeTotals):
        (computeMeans):
        (standardDeviation):
        (computeStdDevs):
        (computeStdErrors):
        (tDist):
        (formatResult):
        (computeLabelWidth):
        (computeMeanWidth):
        (resultLine):
        (printOutput):
        * perf/sunspider-1.0/sunspider-compare-results.js: Added.
        (.computeItemTotals):
        (.computeTotals):
        (.computeMeans):
        (.standardDeviation):
        (.computeStdDevs):
        (.computeStdErrors):
        (.tDist):
        (.formatMean):
        (.computeLabelWidth):
        (.computeMeanWidth):
        (.pad):
        (.resultLine):
        (.printOutput):
        (sunspiderCompareResults):
        * perf/sunspider-1.0/sunspider.css: Added.
        (body):
        (h2):
        (dt):
        (dd):
        (:link):
        (:visited):
        (#testframe):
        (#logo):
        * perf/sunspider-1.0/sunspider.html: Added.
        * perf/sunspider/sunspider.html:
        * perf/sunspider/versions.html: Added.

2013-04-16  Vivek Galatage  <vivek.vg@samsung.com>

        Update team.html to use contributors.json instead of committers.py
        https://bugs.webkit.org/show_bug.cgi?id=114720

        Reviewed by Ryosuke Niwa.

        Updating the team.html to use contributors.json. Also removing the unused field 'area'
        from the contributors information.

        * team.html:

2013-04-16  Ryosuke Niwa  <rniwa@webkit.org>

        The list of contributors in committers.py should be a separate JSON
        https://bugs.webkit.org/show_bug.cgi?id=114673

        Reviewed by Anders Carlsson.

        Updated the website to refer to contributors.json instead of committers.py.

        * coding/commit-review-policy.html:

2013-04-07  Benjamin Poulain  <bpoulain@apple.com>

        Simplify the page "Getting the Code" on WebKit.org
        https://bugs.webkit.org/show_bug.cgi?id=113980

        Reviewed by Sam Weinig.

        * building/checkout.html:
        Instead of interleaving instructions for Mac and Windows, just
        copy the things that make sense and have two clear sections.

        Also mention Linux, it is the exact same instructions as Mac OS X.

        Make svn checkout the alternative to a download of the tarball. It is
        almost impossible to do a svn checkout on slow networks nowadays.

2013-04-04  Benjamin Poulain  <bpoulain@apple.com>

        Update WebKit.org's contact page
        https://bugs.webkit.org/show_bug.cgi?id=113968

        Reviewed by Geoffrey Garen.

        * contact.html:
        -Add a direct link to our archives on Gmane.
        -References the ports mailing-lists. This may reduces the emails
         erroneously sent to webkit-dev.
        -Add a link to our "reporting bug page".
        -Get rid of the link to CIA. The website is dead.

2013-02-18  Simon Hausmann  <simon.hausmann@digia.com>

        Add Digia to the domain affiliations
        https://bugs.webkit.org/show_bug.cgi?id=110116

        Reviewed by Kenneth Rohde Christiansen.

        * team.html:

2013-02-11  Bruno de Oliveira Abinader  <bruno.abinader@basyskom.com>

        Add basysKom to domainAffiliations in team.html
        https://bugs.webkit.org/show_bug.cgi?id=109306

        Reviewed by Laszlo Gombos.

        Register basysKom as contributing company in
        http://www.webkit.org/team.html.

        * team.html:

2013-02-11  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>

        Add intel.com to team.html
        https://bugs.webkit.org/show_bug.cgi?id=109424

        Reviewed by Kenneth Rohde Christiansen.

        * team.html:

2013-02-10  Dirk Schulze  <dschulze@adobe.com>

        Add adobe.com to team.html
        https://bugs.webkit.org/show_bug.cgi?id=109396

        Reviewed by Laszlo Gombos.

        * team.html:

2013-02-10  Laszlo Gombos  <l.gombos@samsung.com>

        Add sisa.samsung.com to team.html
        https://bugs.webkit.org/show_bug.cgi?id=109394

        Reviewed by Dirk Schulze.

        * team.html:

2012-12-20  Ryosuke Niwa  <rniwa@webkit.org>

        Add a sample change log entry to contributing.html
        https://bugs.webkit.org/show_bug.cgi?id=105506

        Reviewed by Alexey Proskuryakov.

        Added a sample change log to the page directly people skimming through the page will still
        see it. Also mention that prepare-ChangeLogs is automatically ran by webkit-patch upload.

        * coding/contributing.html:

2012-12-18  Nico Weber  <thakis@chromium.org>

        Fix broken loop in style guide
        https://bugs.webkit.org/show_bug.cgi?id=105346

        Reviewed by Ryosuke Niwa.

        Found by Sean Silva <silvas@purdue.edu>

        * coding/coding-style.html:

2012-12-11  Ryosuke Niwa  <rniwa@webkit.org>

        Add instructions on how to build WebKit on Xcode 4 to build.html
        https://bugs.webkit.org/show_bug.cgi?id=104739

        Reviewed by Daniel Bates.

        Set the build directories to WebKitBuild.

        * building/build.html:

2012-11-24  Daniel Bates  <dbates@webkit.org>

        Substitute "use" for "user" in sentence about naming convention for
        enum members so that it reads well.

        * coding/coding-style.html:

2012-11-20  Gyuyoung Kim  <gyuyoung.kim@samsung.com>

        Add Samsung to security vendor member list
        https://bugs.webkit.org/show_bug.cgi?id=102863

        Reviewed by Sam Weinig.

        * security/security-group-members.html: Add Samsung members.

2012-10-31  Adam Barth  <abarth@webkit.org>

        technical-articles.html should link to my talk on how WebKit works
        https://bugs.webkit.org/show_bug.cgi?id=100867

        Reviewed by Tony Chang.

        * coding/technical-articles.html:

2012-10-29  Eric Seidel  <eric@webkit.org>

        Technical Articles should link to an old talk I gave
        https://bugs.webkit.org/show_bug.cgi?id=100624

        Reviewed by Adam Barth.

        * coding/technical-articles.html:

2012-09-13  Ryosuke Niwa  <rniwa@webkit.org>

        Another typo fix. Apparently, I "fixed" the wrong line in the previous commit.

        * coding/coding-style.html:

2012-09-13  Ryosuke Niwa  <rniwa@webkit.org>

        Fix a typo per Darin's comment.

        * coding/coding-style.html:

2012-09-13  Ryosuke Niwa  <rniwa@webkit.org>

        Add a style guide rule for signed and unsigned int
        https://bugs.webkit.org/show_bug.cgi?id=96682

        Reviewed by Geoffrey Garen.

        Add a rule per http://lists.webkit.org/pipermail/webkit-dev/2012-September/022199.html.

        * coding/coding-style.html:

2012-08-30  Benjamin Poulain  <bpoulain@apple.com>

        Replace JSC::UString by WTF::String
        https://bugs.webkit.org/show_bug.cgi?id=95271

        Reviewed by Geoffrey Garen.

        Update the coding style to avoid mentioning a class that no longer exist.

        * coding/coding-style.html:

2012-08-09  Ryosuke Niwa  <rniwa@webkit.org>

        Address one more review comment.

        * building/checkout.html:

2012-08-09  Ryosuke Niwa  <rniwa@webkit.org>

        Recommend the use of https and mention git on building/checkout.html
        https://bugs.webkit.org/show_bug.cgi?id=93657

        Reviewed by Mark Rowe.

        This page was quite out-dated. Stop mentioning about how to install subversion on OS X 10.4
        because the paragraph right above it refers to buliding/tools.html for that.

        Recommend the use of HTTPS connection for the Subversion checkout and also mention how to
        checkout using a Git client.

        * building/checkout.html:

2012-07-27  Adam Barth  <abarth@webkit.org>

        Writing a blog post for new reviewers doesn't add value to the blog
        https://bugs.webkit.org/show_bug.cgi?id=92305

        Reviewed by Eric Seidel.

        Now that we have Peter posting weekly updates to the blog, having an
        announcement on the blog for each reviewer is more noise than signal.

        * coding/commit-review-policy.html:

2012-06-19  Ryosuke Niwa  <rniwa@webkit.org>

        Update webkit.org to refer to layoutTestController instead of testRunner
        https://bugs.webkit.org/show_bug.cgi?id=89445

        Reviewed by Kent Tamura.

        * quality/testwriting.html:

2012-05-21  Peter Kasting  <pkasting@google.com>

        Style guide change: Uses of "std::" should be explicitly qualified.
        https://bugs.webkit.org/show_bug.cgi?id=87043

        Reviewed by Ryosuke Niwa.

        * coding/coding-style.html:

2012-05-11  Darin Adler  <darin@apple.com>

       Try to make spacing of fine print items in lower left nicer looking.

        * css/main.css:
        (#notice, #trademark, #terms): Changed top margin to 10px.
        (#notice): Put 30px margin here.

2012-05-11  Darin Adler  <darin@apple.com>

        CSS tweak needed for the trademark terms of use.

        * css/main.css:
        (#notice, #trademark, #terms): Added #trademark.

2012-05-11  Darin Adler  <darin@apple.com>

        Add a link to WebKit trademark terms of use, other small website changes
        https://bugs.webkit.org/show_bug.cgi?id=86112

        Reviewed by Dan Bernstein.

        * contact.html: Use RIGHT SINGLE QUOTATION MARK instead of APOSTROPHE as appropriate.
        Fixed awkward use of the phrase "per itself" and the use of "intent" where "intend"
        was intended.

        * nav.inc: Added mention of the WebKit trademark and a link to the trademark terms
        of use on the macosforge.org terms of use page.

2012-05-07  Dan Bernstein  <mitz@apple.com>

        webkit.org instructions for debugging WebProcess are unnecessarily complex
        https://bugs.webkit.org/show_bug.cgi?id=85756

        Reviewed by Darin Adler.

        * building/debug.html: Added instructions for setting up and using the WebKit workspace for
        debugging the Web process, as well as instructions for debugging the Web process from the
        command line using debug-safari and debug-minibrowser.
        * building/tools.html: Updated links and tweaked the language.

2012-04-23  Daniel Bates  <dbates@webkit.org>

        Add notice about running xcode-select before using Xcode 4.3.2 command line tools

        Rubber-stamped by Eric Seidel.

        Before you can use the Xcode 4.3.2 command line tools, you must either run
        sudo xcode-select -switch /Applications/Xcode.app or set the environment variable
        DEVELOPER_DIR to point to the Xcode developer tools directory.

        * building/tools.html:

2012-04-23  Daniel Bates  <dbates@webkit.org>

        Explicitly mention Xcode version 4.3.2 in Mac debug instructions

        Rubber-stamped by Eric Seidel.

        The build location instructions at the top of page building/{debug-mac-uiprocess.html, debug.html}
        are specific to Xcode 4.3.2.

        * building/debug-mac-uiprocess.html: Substitute "Xcode 4.3.2" for "Xcode 4".
        * building/debug.html: Ditto.

2012-04-19  Daniel Bates  <dbates@webkit.org>

        Update Build Location notice on Mac debug instructions to reflect changes in Xcode 4.3.2
        https://bugs.webkit.org/show_bug.cgi?id=84364

        Reviewed by Eric Seidel.

        As of Xcode 4.3.2, the build location "Locations Specified by Targets" has been renamed to
        "Legacy".

        * building/debug-mac-uiprocess.html:
        * building/debug.html:

2012-03-13  Rebecca Hauck  <rhauck@adobe.com>

        Working With Code > Installing Developer Tools needs to be updated with OS X Lion & App Store details
        https://bugs.webkit.org/show_bug.cgi?id=80429

        Reviewed by Dan Bernstein.

        * building/tools.html:

2012-03-10  Daniel Bates  <dbates@webkit.org>

        Switch from HTTP to HTTPS for Xcode developer.apple.com hyperlinks

        The Debugging and Analyzing Your Code page cannot be viewed at <http://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/Debugging/Debugging.html#//apple_ref/doc/uid/TP40010215-CH3-SW1> (1) as this URL redirects to the Mac OS X Developer Library <https://developer.apple.com/library/mac/navigation/>.
        Substituting https for http in (1) returns the expected page.

        * building/debug-mac-uiprocess.html:
        * building/debug.html:

2012-03-01  Seo Sanghyeon  <sh4.seo@samsung.com>

        Add a link to the EFL wiki page
        https://bugs.webkit.org/show_bug.cgi?id=79439

        Reviewed by Adam Barth.

        * building/tools.html:
        * css/main.css: Cross-browser border-radius.

2012-02-24  Tom Zakrajsek  <tomz@codeaurora.org>

        team.html (on webkit.org) doesn't recognize codeaurora.org
        https://bugs.webkit.org/show_bug.cgi?id=79529

        Reviewed by Ryosuke Niwa.

        * team.html:

2012-02-16  Kent Tamura  <tkent@chromium.org>

        Improve usability of coding-style.html
        https://bugs.webkit.org/show_bug.cgi?id=78470

        Reviewed by Eric Seidel.

        * coding/coding-style.html:
        - Do not add a title attribute to each of LI elements
        - Do not add a click handler to each of them
        - Add a SPAN element in order to show [id-name] and provide smaller clickable area.

2012-01-23  Seo Sanghyeon  <sh4.seo@samsung.com>

        website: Reword WEBKITOUTPUTDIR documentation on Building WebKit page
        https://bugs.webkit.org/show_bug.cgi?id=76544

        Reviewed by Darin Adler.

        WEBKITOUTPUTDIR is not only for Windows.

        * building/build.html:

2012-01-20  Kent Tamura  <tkent@chromium.org>

        Each style rule should have its own ID.
        https://bugs.webkit.org/show_bug.cgi?id=76428

        Reviewed by David Levin.

        * coding/coding-style.html: Add an id attribute to each of li elements,
        and add code to set title="#id-name" and to make li elements clickable.

2012-01-19  Daniel Bates  <dbates@webkit.org>

        Remove "Safari 5.1 shipped" text from debugging instructions; move misplaced </ol>

        Rubber-stamped by Sam Weinig.

        * building/debug.html:

2012-01-19  Daniel Bates  <dbates@webkit.org>

        Update Debugging on Mac OS X instructions for Safari 5.1/WebKit 2
        https://bugs.webkit.org/show_bug.cgi?id=67102

        Reviewed by Eric Seidel.

        Add instructions for debugging UIProcess and WebProcess using Xcode 4.

        * building/active-scheme-xcode4.png: Added.
        * building/build-settings-tab-xcode4.png: Added.
        * building/build-window.png: Removed.
        * building/custom-executable-xcode4.png: Added.
        * building/custom-executable.png: Removed.
        * building/debug-mac-uiprocess.html: Added.
        * building/debug.html:
        * building/debug.png: Removed.
        * building/info-tab.png: Removed.
        * building/run-xcode4.png: Added.

2012-01-11  Antti Koivisto  <antti@apple.com>

        Remove S60 reference from webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=76044

        Reviewed by Simon Hausmann.

        There is no S60.

        * index.html:

2012-01-10  Hajime Morrita  <morrita@chromium.org>

        [Website] i-Bench is no longer available.
        https://bugs.webkit.org/show_bug.cgi?id=76027

        Reviewed by Ryosuke Niwa.

        Updated the availability information of i-Bench.

        * projects/performance/index.html:

2011-12-07  Daniel Bates  <dbates@webkit.org>

        ASSERT_UNREACHED() should be ASSERT_NOT_REACHED() on assertion-guidelines.html
        https://bugs.webkit.org/show_bug.cgi?id=74006

        Reviewed by Antonio Gomes.

        As far I can tell, we've never had an ASSERT_UNREACHED(). We do have an
        ASSERT_NOT_REACHED().

        * coding/assertion-guidelines.html:

2011-11-30  Ryosuke Niwa  <rniwa@webkit.org>

        commit-review-policy.html should make clear committers shouldn't land patches without authors' consent
        https://bugs.webkit.org/show_bug.cgi?id=73098

        Reviewed by Antti Koivisto.

        Revise the sentence about committers being allowed to land patches by others to explicitly state that
        they can only land patches by others if asked by authors themselves.

        * coding/commit-review-policy.html:

2011-11-14  Mark Rowe  <mrowe@apple.com>

        Upgrade WordPress's Akismet plug-in to the latest version.

        * blog/wp-content/plugins/akismet:

2011-11-14  Mark Rowe  <mrowe@apple.com>

        Update one file that was missed.

        * blog/wp-settings.php:

2011-11-14  Mark Rowe  <mrowe@apple.com>

        Upgrade WordPress to v3.2.1.

        * blog:

2011-10-28  Dean Jackson  <dino@apple.com>

        Remove this horribly outdated file. It was showing up in
        Google searches and shouldn't be used as official
        documentation.

        Rubber-stamped by Simon Fraser.

        * specs/MediaQueriesExtensions.html: Removed.

2011-10-21  Ryosuke Niwa  <rniwa@webkit.org>

        Style guide should mention the preference of index over iterator
        https://bugs.webkit.org/show_bug.cgi?id=70285

        Reviewed by Darin Adler.

        Per discussion on https://lists.webkit.org/pipermail/webkit-dev/2011-October/018274.html,
        we prefer index over iterators.

        * coding/coding-style.html:

2011-10-10  Ryosuke Niwa  <rniwa@webkit.org>

        Fix a typo pointed by Sam (Weinig).

        * coding/coding-style.html:

2011-10-10  Ryosuke Niwa  <rniwa@webkit.org>

        Style guide should mandate use of pass-by-reference for out arguments
        https://bugs.webkit.org/show_bug.cgi?id=69766

        Reviewed by Darin Adler.

        This matches the convention used throughout WebCore.

        * coding/coding-style.html:

2011-10-06  Amruth Raj  <amruthraj@motorola.com>

        Add Motorola Mobility to team.html
        https://bugs.webkit.org/show_bug.cgi?id=69597

        Reviewed by Ryosuke Niwa.

        * team.html:

2011-09-20  Ryosuke Niwa  <rniwa@webkit.org>

        Generate WebKit team's page out of committers.py
        https://bugs.webkit.org/show_bug.cgi?id=68045

        Fix per Daniel's review comment since I had misunderstood the code.

        * team.html:

2011-09-20  Ryosuke Niwa  <rniwa@webkit.org>

        Generate WebKit team's page out of committers.py
        https://bugs.webkit.org/show_bug.cgi?id=68045

        Reviewed by Daniel Bates.

        Add the initial implementation of team.html. This page automatically pulls data from committers.py
        There are no areas of expertise but that'll be added once the bug 68061 is fixed.

        * team.html: Added.

2011-09-01  Jon Lee  <jonlee@apple.com>

        Adding control rendering at various sizes.

        * projects/forms/survey.html:

2011-08-29  Jon Lee  <jonlee@apple.com>

        Updating forms survey with non-standard wrap for textarea and more data-list driven text fields.

        * projects/forms/survey.html:

2011-08-17  Jon Lee  <jonlee@apple.com>

        Updating the forms survey to include various element sizes.

        * projects/forms/survey.html:

2011-08-16  Daniel Bates  <dbates@webkit.org>

        Add myself to the list of individual members in the WebKit Security Group.

        Rubber-stamped by Eric Seidel.

        * security/security-group-members.html:

2011-08-09  Anders Carlsson  <andersca@apple.com>

        Broken link to LICENSE on contributing code page
        https://bugs.webkit.org/show_bug.cgi?id=65947

        Reviewed by Ryosuke Niwa.

        * coding/contributing.html:

2011-08-04  Dan Bernstein  <mitz@apple.com>

        Fixed a typo.

        * coding/contributing.html:

2011-08-04  Nico Weber  <thakis@chromium.org>

        Update the contributors page to recommend webkit-patch instead of many manual steps
        https://bugs.webkit.org/show_bug.cgi?id=65714

        Reviewed by Adam Barth.

        asvitkine followed the contributing instructions for his first patch, and got
        the ChangeLog entry wrong: https://bugs.webkit.org/show_bug.cgi?id=65707
        webkit-patch prevents errors like this and more.

        * coding/contributing.html:

2011-07-21  Jon Lee  <jonlee@apple.com>

        Create a new survey page that showcases form and interactive elements for quick reference and comparison.
        <rdar://problem/9782965>

        Rubber-stamped by Maciej Stachowiak.

        * projects/forms/image-usemap.png: Added.
        * projects/forms/image1.png: Added.
        * projects/forms/image10.png: Added.
        * projects/forms/image16.png: Added.
        * projects/forms/index.html: Update links
        * projects/forms/survey.html: Added.

2011-07-20  Leo Yang  <leo.yang@torchmobile.com.cn>

        SVG feature status is not up-to-date
        https://bugs.webkit.org/show_bug.cgi?id=64856

        Reviewed by Dirk Schulze.

        Update SVG feature status after r91331.

        * projects/svg/status.xml:

2011-06-29  Leandro Pereira  <leandro@profusion.mobi>

        Reviewed by Darin Adler.

        Add note about cases where enums are preferred over bools on function parameters.
        https://bugs.webkit.org/show_bug.cgi?id=63564

        This matches the outcome of this webkit-dev thread:
        https://lists.webkit.org/pipermail/webkit-dev/2010-December/015192.html

        * coding/coding-style.html:

2011-05-31  Chris Evans  <cevans@chromium.org>

        Reviewed by Drew Yao.

        Add "Collaboration" to WebKit Security Group Privileges and Responsibilities section.

        * security/index.html: Add "Collaboration" section with text discussed on webkit-security.

2011-05-20  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Dan Bernstein.

        Building instructions should not talk about Tiger
        https://bugs.webkit.org/show_bug.cgi?id=61210

        * building/tools.html: Removed steps that are only necessary on Tiger, and changed required
        Xcode version to the latest Leopard one.

2011-05-16  Huzaifa Sidhpurwala <huzaifas@redhat.com>

       Reviewed by Adam Barth.

       Add Huzaifa Sidhpurwala to the WebKit Security Group site.
       https://bugs.webkit.org/show_bug.cgi?id=60686

       * security/security-group-members.html:

2011-05-11  Cris Neckar  <cdn@chromium.org>

        Reviewed by David Levin.

        Adding Cris Neckar to the Webkit Security Group site.
        https://bugs.webkit.org/show_bug.cgi?id=60668

        * security/security-group-members.html:

2011-05-11  Ademar de Souza Reis Jr.  <ademar.reis@openbossa.org>

        Reviewed by Mark Rowe.

        Update Qt/Nokia Security contacts
        https://bugs.webkit.org/show_bug.cgi?id=60650

        Ademar (me) replaced Simon as the release manager and primary security
        contact for QtWebKit. See:
        http://lists.webkit.org/mailman/private.cgi/webkit-security/2011-February/000584.html

        * security/security-group-members.html:

2011-05-09  Eric Seidel  <eric@webkit.org>

        Reviewed by Adam Barth.

        Add guidelines for feature addition to webkit.org (per disccusion at contributor meeting)
        https://bugs.webkit.org/show_bug.cgi?id=59672

        * coding/adding-features.html: Added.
        * nav.inc:

2011-04-29  Pavel Feldman  <pfeldman@chromium.org>

        Not reviewed: adding image files for the blog post.

        * blog-files/inspector/remote-debugging-attached.png: Added.
        * blog-files/inspector/remote-debugging-discovery.png: Added.

2011-04-27  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Dan Bernstein.

        change style guide to pre-increment in for-loops
        https://bugs.webkit.org/show_bug.cgi?id=59619

        This matches what a number of reviewers have been asking
        for in code reviews.

        * coding/coding-style.html:

2011-04-26  Carol Szabo  <carol.szabo@nokia.com>

        Reviewed by Tor Arne Vestbø.

        Added instructions on how to work from behind proxy
        and detailed the instructions refering to rebasing.
        Windows build instructions do not work if you are behind a proxy
        or have a Temp directory that you do not own directly.
        https://bugs.webkit.org/show_bug.cgi?id=57246

        * building/tools.html:

2011-04-09  Dimitri Glazkov  <dglazkov@chromium.org>

        Reviewed by James Robinson.

        Add a diagram, explaning how  an event's relatedTarget interact with shadow DOM boundaries.
        https://bugs.webkit.org/show_bug.cgi?id=58190

        * misc/related-target-and-shadow-dom.svg: Added.

2011-04-06  David Levin  <levin@chromium.org>

        Reviewed by Ojan Vafai.

        Augment style guidelines about meaningless parameters from text the unwritten rules email.
        https://bugs.webkit.org/show_bug.cgi?id=55275

        * coding/coding-style.html:

2011-04-05  Yury Semikhatsky  <yurys@chromium.org>

        Unreviewed. Add Web Inspector stack trace, pause on exception and window.onerror
        screenshots.

        * blog-files/inspector/stack-traces-img/1.png: Added.
        * blog-files/inspector/stack-traces-img/2.png: Added.
        * blog-files/inspector/stack-traces-img/3.png: Added.
        * blog-files/inspector/stack-traces-img/4.png: Added.
        * blog-files/inspector/stack-traces-img/5.png: Added.
        * blog-files/inspector/stack-traces-img/6.png: Added.
        * blog-files/inspector/stack-traces-img/button.png: Added.

2011-02-26  David Levin  <levin@chromium.org>

        Reviewed by Darin Adler.

        Add style guidelines about comments from the unwritten rules email.
        https://bugs.webkit.org/show_bug.cgi?id=55272

        * coding/coding-style.html: Added the guidelines.

2011-02-09  Alexander Pavlov  <apavlov@chromium.org>

        Unreviewed. Add Web Inspector stylesheet resource diff screenshot.

        * blog-files/inspector/css_rule_diff.png: Added.

2011-02-07  Alexander Pavlov  <apavlov@chromium.org>

        Unreviewed. Add Web Inspector warning 10x10 PNG, move files from r77801 into the inspector/ directory.

        * blog-files/inspector/css_as_authored.png: Renamed from Websites/webkit.org/blog-files/inspector-css-as-authored.png.
        * blog-files/inspector/css_autocomplete.png: Renamed from Websites/webkit.org/blog-files/inspector-css-autocomplete.png.
        * blog-files/inspector/css_unknown_properties.png: Renamed from Websites/webkit.org/blog-files/inspector-unknown-css-properties.png.
        * blog-files/inspector/warning_10x10.png: Added.

2011-02-07  Alexander Pavlov  <apavlov@chromium.org>

        Unreviewed. Add Web Inspector style editing screenshots.

        * blog-files/inspector-css-as-authored.png: Added.
        * blog-files/inspector-css-autocomplete.png: Added.
        * blog-files/inspector-unknown-css-properties.png: Added.

2011-01-21  David Levin  <levin@chromium.org>

        Reviewed by Darin Adler.

        Proposal: Require cross-organizational seconds for reviewer nominations
        https://bugs.webkit.org/show_bug.cgi?id=47597

        This changes the committer/reviewer policy to require an additional
        reviewer supporting a reviewer nomination to work for a different
        company and different project affiliation from the nominee.

        This means reviewer nominations would require four supporting reviewers,
        one of which knows the reviewer through the community (irc, email, bugs)
        ensuring that the nominee has the open-source collaboration skills
        we so highly value here in WebKit.

        * coding/commit-review-policy.html:

2011-01-01  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Move JavaScriptCore to Source
        https://bugs.webkit.org/show_bug.cgi?id=51604

        * coding/assertion-guidelines.html:
          - Update documentation to point to the new location of
            JavaScriptCore.

2010-12-17  Dan Bernstein  <mitz@apple.com>

        Reviewed by Simon Fraser.

        Rename WebKitTools to Tools
        https://bugs.webkit.org/show_bug.cgi?id=49861

        * asking_questions.html:
        * building/tools.html:
        * coding/scripts.html:

2010-11-08  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Adam Roben.

        We should add a build step to comment out or remove the lines unsetting TEMP and TMP in the
        .bashrc file.
        https://bugs.webkit.org/show_bug.cgi?id=49189

        * building/tools.html:
        Add a line recommending bash shell users to comment out or remove those lines, with an
        explanation as to why.

2010-11-04  Orlando Leite  <orlleite@gmail.com>

        Reviewed by Adam Barth.

        Add Java for Mac OS X Developer Package to Installing Developer Tools web page

        * building/tools.html:

2010-10-29  Adam Roben  <aroben@apple.com>

        Instruct developers to install the Feburary 2010 DirectX SDK, not just
        any version

        The February 2010 SDK is the last one with support for Visual Studio
        2005.

        I also removed some unnecessary instructions regarding the DirectX
        SDK.

        Fixes <http://webkit.org/b/48642> webkit.org should recommend a
        specific version of the DirectX SDK

        Reviewed by Steve Falkenburg.

        * building/tools.html:

2010-10-28  Lucas Forschler  <lforschler@apple.com>

        Reviewed by Geoffrey Garen.

        Bug 46927 - Sunspider 0.9 web site should prominently link to Sunspider 0.9.1
        Notes:
            -Created a new sunspider "landing" page which lists current and previous versions of SunSpider.
            -Edited the .htaccess file to redirect the old pages to the new landing page.
            -This should keep our search engine page rankings effective.
        Potentially breaking:
            -This COULD potentially break the SunSpider benchmark.
            -Local testing with relative links seems to function as expected.
            -The .htaccess 301 redirects are UNTESTED.


        * .htaccess:
        * perf/sunspider: Added.
        * perf/sunspider-0.9.1/sunspider.html: Removed.
        * perf/sunspider-0.9.1/versions.html: Removed.
        * perf/sunspider-0.9/sunspider.html: Removed.
        * perf/sunspider/sunspider.css: Added.
        * perf/sunspider/sunspider.html: Added.

2010-10-19  Jenn Braithwaite  <jennb@chromium.org>

        Reviewed by David Levin.

        Add DirectX SDK to Installing Developer Tools web page
        https://bugs.webkit.org/show_bug.cgi?id=47911

        * building/tools.html:

2010-09-30  David Levin  <levin@chromium.org>

        Reviewed by Darin Adler.

        Add guideline for constructors doing implicit type conversion to coding style.
        https://bugs.webkit.org/show_bug.cgi?id=47646

        * coding/coding-style.html:

2010-10-01  Alex Mathews  <possessedpenguinbob@gmail.com>

        Reviewed by Simon Fraser.

        Bug 47013 - Main Web Inspector link on webkit.org links to old wiki page
        https://bugs.webkit.org/show_bug.cgi?id=47013

        * nav.inc: Removed the space from the web inspector wiki link.

2010-09-22  Balazs Kelemen  <kbalazs@webkit.org>

        Unreviewed HTML syntax fix for my recent change in the coding-style.

        * coding/coding-style.html: Change "&gt" and "&lt" to "&gt;" and "&lt;".

2010-09-22  Balazs Kelemen  <kb@inf.u-szeged.hu>

        Reviewed by Darin Adler.

        check-webkit-style and the coding style guidelines page are inconsistent
        https://bugs.webkit.org/show_bug.cgi?id=46099

        * coding/coding-style.html:
        Making clear that includes of system headers must come after includes of other headers.

2010-09-16  Tony Gentilcore  <tonyg@chromium.org>

        Reviewed by Adam Barth.

        Adding a timeline screenshot for blocking and defer scripts
        https://bugs.webkit.org/show_bug.cgi?id=45933

        * blog-files/timeline-blocking-script.png: Added.
        * blog-files/timeline-defer-script.png: Added.

2010-09-14  Jessie Berlin  <jberlin@apple.com>

        Reviewed by Adam Roben.

        Exceptions are getting ignored on 64-bit Windows in the Web Process.
        https://bugs.webkit.org/show_bug.cgi?id=45779

        * building/tools.html:
        Add instructions about how to optionally get hotfix 976038.

2010-09-06  Robin Qiu  <robin.qiu@torchmobile.com.cn>

        Reviewed by Adam Barth.

        https://bugs.webkit.org/show_bug.cgi?id=43982
        This js file seems to be a popular script for detecting mobile WebKit but
        it has a flaw that makes it fail on Android and BlackBerry.

        The issue is that it looks for "Mobile/" but Android and BlackBerry
        use "Mobile" with no numbering after it.
        Changed RegExp pattern " Mobile/" to " Mobile\\b".

        * misc/WebKitDetect.js:
        (WebKitDetect.isMobile):

2010-08-27  Darin Adler  <darin@apple.com>

        * coding/RefPtr.html: Minor revision, improve clarity and mention some
        recent developments.

2010-08-26  Daniel Bates  <dbates@rim.com>

        Reviewed by Dumitru Daniliuc.

        Fix misspelled words on WebKit.org contact.html,
        demos/index.html, and quality/leakhunting.html
        https://bugs.webkit.org/show_bug.cgi?id=44747

        Fix some misspelled words on the WebKit.org site.

        * contact.html: Change "bugreports" [sic] to "bug reports".
        * demos/index.html: Change "testcase" [sic] to "test case".
        * quality/leakhunting.html: Change "formating" [sic] to "formatting".

2010-08-23  David Kilzer  <ddkilzer@apple.com>

        Clean up some HTML typos in crashlogs.html

        Rubber-stamped by Maciej Stachowiak.

        * quality/crashlogs.html: Fixed "</code>>" typos added in
        r56300.  Changed "<tt>" tag with style attribute to "<code>"
        that was missed in r56300.

2010-08-17  Beth Dakin  <bdakin@apple.com>

        Rubber-stamped by Adele.

        Adding a MathML Demo and screenshot.

        * blog-files/riemann-screenshot.png: Added.
        * demos/mathml: Added.
        * demos/mathml/MathMLDemo.xhtml: Added.

2010-08-17  Adam Roben  <aroben@apple.com>

        Instruct developers to (optionally) install Debugging Tools for
        Windows

        These tools are used by some of our scripts, so are useful for
        developers to have installed.

        Fixes <http://webkit.org/b/44128> webkit.org building instructions
        should recommend installing Debugging Tools for Windows

        Reviewed by Sam Weinig.

        * building/tools.html:

2010-07-30  Renata Hodovan  <reni@inf.u-szeged.hu>

        Reviewed by Nikolas Zimmermann.

        Update SVG implementation status.

        * projects/svg/status.xml:

2010-07-21  Dimitri Glazkov  <dglazkov@chromium.org>

        Reviewed by Darin Adler.

        Add a diagram explaining how a DOM element is attached to the site.
        https://bugs.webkit.org/show_bug.cgi?id=42763

        * coding/dom-element-attach.html: Added.
        * coding/images/dom-element-attach-large.png: Added.
        * coding/images/dom-element-attach-small.png: Added.
        * coding/images/dom-element-attach.graffle: Added.
        * coding/technical-articles.html: Added a link to the page with the diragram.

2010-06-16  Jeremy Moskovich  <jeremy@chromium.org>

        Reviewed by Darin Adler.

        Improve assertion macro documentation.

        https://bugs.webkit.org/show_bug.cgi?id=40565

        * coding/assertion-guidelines.html:

2010-06-16  Jeremy Moskovich  <jeremy@chromium.org>

        Reviewed by Geoffrey Garen.

        Add an index of technical articles to the WebKit site.  This makes the
        links to the RefPtr and Assertion documentation discoverable and
        provides an easy way to find some useful blog posts.

        https://bugs.webkit.org/show_bug.cgi?id=40561

        * coding/technical-articles.html: Added.
        * nav.inc: Add link to technical articles.

2010-06-15  Adam Roben  <aroben@apple.com>

        Remove some unnecessary steps for setting up the debugger on Windows

        Apparently update-webkit does this for you now.

        Rubber-stamped by Steve Falkenburg.

        * building/debug.html: Removed the first two Windows steps, which are
        now unnecessary, and updated the third to reflect reality.

2010-06-14  Adam Roben  <aroben@apple.com>

        Improve instructions for debugging on Windows

        Fixes <http://webkit.org/b/40585>.

        Reviewed by Steve Falkenburg.

        * building/debug.html: Improved the Windows instructions. We now
        instruct users to set things up so that hitting F5 from WebKit.sln
        will launch Safari with the WEBKITNIGHTLY environment variable
        pointing to the location of the built WebKit.dll.

        * building/console_vs2005.jpg: Removed.
        * building/debug_vs2005.jpg: Removed.

        * building/launch-debugger-vs2005.png: Added.
        * building/set-as-startup-project-vs2005.png: Added.
        * building/set-debugging-properties-vs2005.png: Added.

2010-06-07  Jeremy Moskovich  <jeremy@chromium.org>

        Reviewed by Darin Adler.

        Add documentation on the various assertion macros in WebKit.

        https://bugs.webkit.org/show_bug.cgi?id=39950

        * coding/assertion-guidelines.html: Added.

2010-05-29  Sterling Swigart  <sswigart@google.com>

        Reviewed by David Levin.

        Adding tests to canvas.html performance test
        https://bugs.webkit.org/show_bug.cgi?id=39883

        * demos/canvas-perf/canvas.html:
        Added tests for:
            strokeText
            fillText
            strokeLine

2010-05-25  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Darin Adler.

        Update the style guide re: static member variables and structs
        https://bugs.webkit.org/show_bug.cgi?id=39663

        Per Darin Adler's proposal on webkit-dev.

        All static member variables should be prefixed with s_.
        m_ should not be used for public data members in structs.
        Only structs should have public data members.

        * coding/coding-style.html:

2010-05-24  David Levin  <levin@chromium.org>

        Reviewed by Maciej Stachowiak.

        Improve canvas perf test accuracy.
        https://bugs.webkit.org/show_bug.cgi?id=39635

        * demos/canvas-perf/canvas.html:
          1. Change the various tests to get the image data for the result
             to help ensure that the operation has completed by the time,
             and subtract out the time needed to do this.
          2. Made the test more flexible about number of repetitions and
             image size.
          3. Make the tests run separately and have a pause between them
             to allow for garbage collection so that results are more
             consistent.
          4. Added a standard logging function and shouldBe asserts to
             verify that the correct scaling operations were happening.

2010-05-20  Daniel Bates  <dbates@rim.com>

        Rubber-stamped by Simon Fraser.

        Spelling correction; change "acces" [sic] to "access".

        * quality/lifecycle.html:

2010-05-14  Eric Seidel  <eric@webkit.org>

        Reviewed by Maciej Stachowiak.

        Update tools.html to mention that Tiger users require a newer Python
        https://bugs.webkit.org/show_bug.cgi?id=38822

        Also updated the instructions that only Tiger users need
        to install a subversion client.  Newer OSes already have
        subversion included in the install.

        * building/tools.html:

2010-05-08  Dirk Schulze  <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        SVGFont's VKern implementation missing
        https://bugs.webkit.org/show_bug.cgi?id=38663

        * projects/svg/status.xml:

2010-05-05  Shinichiro Hamaji  <hamaji@chromium.org>

        Reviewed by Adam Barth.

        Commit and Review policy should encourage unofficial reviews
        https://bugs.webkit.org/show_bug.cgi?id=38517

        * coding/commit-review-policy.html:

2010-05-04  Dumitru Daniliuc  <dumi@chromium.org>

        Reviewed by Darin Adler.

        Fix the sticky-notes demo.
        https://bugs.webkit.org/show_bug.cgi?id=38550

        1. Exceptions thrown by openDatabase() should be treated as
        failures.
        2. Do not allow users to create new notes when openDatabase()
        failed.

        * demos/sticky-notes/index.html:

2010-05-02  Dirk Schulze  <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        SVG hkern implementation incomplete
        https://bugs.webkit.org/show_bug.cgi?id=38407

        We support hkern now. Mention this in the SVG status page.

        * projects/svg/status.xml:

2010-04-29  Dean Jackson  <dino@apple.com>

        Unreviewed. Make a note that we are no longer proposing
        the evaluateMediaQuery method. Instead, we are following
        the standard matchMedium method from CSS 3 View.

        * specs/MediaQueriesExtensions.html:

2010-04-18  Adam Barth  <abarth@webkit.org>

        Unreviewed.  Update a label of the diagram to better match the
        description in the text of the blog post.

        * blog-files/loader-diagram.svg:

2010-04-17  Adam Barth  <abarth@webkit.org>

        Unreviewed.  Added loader diagram for upcoming blog post.

        * blog-files/loader-diagram.svg: Added.

2010-04-11  Joseph Pecoraro  <joepeck@webkit.org>

        Reviewed by Eric Seidel.

        Minor Updates and Cleanup to the Contributing Page
        https://bugs.webkit.org/show_bug.cgi?id=37415

        * coding/contributing.html:

2010-04-07  Maciej Stachowiak  <mjs@apple.com>

        (Not reviewed.)

        Random demo to look cool on twitter.

        * misc/gradient-input.html: Added.

2010-04-04  Pavel Feldman  <pfeldman@chromium.org>

        (Not reviewed).

        Adding images for inspector blog post. Previewed by Timothy Hatcher.

        * blog-files/inspector/audits_launcher.png: Added.
        * blog-files/inspector/audits_panel.png: Added.
        * blog-files/inspector/console_panel.png: Added.
        * blog-files/inspector/context_menu.png: Added.
        * blog-files/inspector/css_highlighted_line.png: Added.
        * blog-files/inspector/css_line_number_snippet.png: Added.
        * blog-files/inspector/css_line_numbers.png: Added.
        * blog-files/inspector/deactivate_breakpoints.png: Added.
        * blog-files/inspector/evaluate_on_hover.png: Added.
        * blog-files/inspector/evaluate_on_hover_2.png: Added.
        * blog-files/inspector/inherited_styles.png: Added.
        * blog-files/inspector/large_dom.png: Added.
        * blog-files/inspector/large_resources.png: Added.
        * blog-files/inspector/pseudo_elements.png: Added.
        * blog-files/inspector/redirect_headers.png: Added.
        * blog-files/inspector/redirect_headers_full.png: Added.
        * blog-files/inspector/redirects.png: Added.
        * blog-files/inspector/redirects_full.png: Added.
        * blog-files/inspector/timeline_overview.png: Added.
        * blog-files/inspector/timeline_panel.png: Added.
        * blog-files/inspector/timeline_record_details.png: Added.

2010-03-25  Joseph Pecoraro  <joepeck@webkit.org>

        Reviewed by David Levin.

        Asking Questions Page Grammar Fixes
        https://bugs.webkit.org/show_bug.cgi?id=36608

        * asking_questions.html:

2010-03-25  Joseph Pecoraro  <joepeck@webkit.org>

        Reviewed by Timothy Hatcher.

        New Asking Questions Page is not Valid HTML5
        https://bugs.webkit.org/show_bug.cgi?id=36605

        * asking_questions.html: fixed issues raised by the validator.

2010-03-25  Julien Chaffraix  <jchaffraix@webkit.org>

        Reviewed by David Levin.

        Add a page on how to ask questions
        https://bugs.webkit.org/show_bug.cgi?id=35223

        * asking_questions.html: Added.
        Add a page on how to ask questions based on Ariya Hidayat's mail: how
        to get help effectively
        (http://article.gmane.org/gmane.os.opendarwin.webkit.user/145/match=get+help+effectively)

        * contact.html: Tweaked the wording to make it more clear what the
        mailing list are used for. Also changed the formatting to better
        underline the different mailing lists.

2010-03-24  Sam Weinig  <sam@webkit.org>

        Rubber-stamped by Anders Carlsson..

        Update Security Group Members list.

        * security/security-group-members.html:

2010-03-22  Maciej Stachowiak  <mjs@apple.com>

        (Not reviewed.)

        Add another example.

        * demos/accessible-ascii-art/butterfly-figure.html: Added.

2010-03-22  Maciej Stachowiak  <mjs@apple.com>

        (Not reviewed.)

        Add example of accessible ASCII art for HTML WG.

        * demos/accessible-ascii-art: Added.
        * demos/accessible-ascii-art/butterfly.html: Added.

2010-03-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Mark Rowe.

        WebKit blog should be valid HTML5
        https://bugs.webkit.org/show_bug.cgi?id=36410

        * blog/wp-content/themes/webkit/comments-popup.php:
        * blog/wp-content/themes/webkit/footer.php:
        * blog/wp-content/themes/webkit/header.php:

2010-03-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Mark Rowe.

        Fix a bunch of HTML5 validation errors on various pages.
        https://bugs.webkit.org/show_bug.cgi?id=36409

        * building/build.html:
        * building/checkout.html:
        * building/debug.html:
        * building/run.html:
        * building/tools.html:
        * coding/coding-style.html:
        * coding/contributing.html:
        * coding/major-objects.html:
        * css/main.css:
        (.asciiart):
        * demos/index.html:
        * header.inc:
        * projects/compat/index.html:
        * projects/css/index.html:
        * projects/documentation/index.html:
        * projects/goals.html:
        * projects/index.html:
        * projects/mathml/index.html:
        * quality/bugpriorities.html:
        * quality/bugwriting.html:
        * quality/crashlogs.html:
        * quality/lifecycle.html:
        * quality/testing.html:
        * quality/testwriting.html:

2010-03-19  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Mark Rowe.

        webkit.org should use the HTML5 doctype
        https://bugs.webkit.org/show_bug.cgi?id=36407

        * header.inc:
        * misc/drosera/index.html:
        * perf/slickspeed/system/index.php:
        * perf/slickspeed/system/template.php:
        * specs/index.html:

2010-03-19  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Mark Rowe.

        http://webkit.org/ has an HTML5 validation error
        https://bugs.webkit.org/show_bug.cgi?id=36406

        * nav.inc:

2010-03-15  Maciej Stachowiak  <mjs@apple.com>

        Tweak canvas perf demo.

        * demos/canvas-perf/canvas.html:

2010-03-14  Maciej Stachowiak  <mjs@apple.com>

        Added canvas perf demo for whatwg.

        * demos/canvas-perf: Added.
        * demos/canvas-perf/canvas.html: Added.
        * demos/canvas-perf/kraken.jpg: Added.

2010-03-09  Adam Roben  <aroben@apple.com>

        Add a link to the Contributors Meeting registration form in the
        sidebar

        Rubber-stamped in advance by Adele Peterson.

        * nav.inc: Added a link underneath "Trac".

2010-02-26  Sam Weinig  <sam@webkit.org>

        Rubber-stamped by Adele Peterson.

        Update Security Group Members list.

        * security/security-group-members.html:

2010-02-23  Jessie Berlin  <jberlin@webkit.org>

        Reviewed by Eric Seidel and Adam Roben.

        Debugging WebKit on Windows should mention WebKit.sln as an alternative to running debug-safari.
        https://bugs.webkit.org/show_bug.cgi?id=35098

        * building/debug.html:
        Add instructions on how to build and run WebKit from within Visual Studio.

2010-02-20  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Adam Barth.

        Add sunspider-0.9.1 to the site in preparation for announcing it.
        https://bugs.webkit.org/show_bug.cgi?id=35206

        * perf/sunspider-0.9.1: Added.
        * perf/sunspider-0.9.1/json2.js: Added.
        * perf/sunspider-0.9.1/sunspider-0.9: Added.
        * perf/sunspider-0.9.1/sunspider-0.9.1: Added.
        * perf/sunspider-0.9.1/sunspider-0.9.1/driver.html: Added.
        * perf/sunspider-0.9.1/sunspider-0.9.1/results.html: Added.
        * perf/sunspider-0.9.1/sunspider-0.9.1/sunspider-test-contents.js: Added.
        * perf/sunspider-0.9.1/sunspider-0.9.1/sunspider-test-prefix.js: Added.
        * perf/sunspider-0.9.1/sunspider-0.9/driver.html: Added.
        * perf/sunspider-0.9.1/sunspider-0.9/results.html: Added.
        * perf/sunspider-0.9.1/sunspider-0.9/sunspider-test-contents.js: Added.
        * perf/sunspider-0.9.1/sunspider-0.9/sunspider-test-prefix.js: Added.
        * perf/sunspider-0.9.1/sunspider-analyze-results.js: Added.
        * perf/sunspider-0.9.1/sunspider-compare-results.js: Added.
        * perf/sunspider-0.9.1/sunspider.css: Added.
        * perf/sunspider-0.9.1/sunspider.html: Added.
        * perf/sunspider-0.9.1/versions.html: Added.

2010-02-17  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed - demo.

        Made some examples of using <details> for table descriptions.

        * demos/hover-summary: Added.
        * demos/hover-summary/details.css: Added.
        * demos/hover-summary/details.js: Added.
        (summaryClickListener):
        ():
        (window.onload):
        * demos/hover-summary/example1.html: Added.
        * demos/hover-summary/example2.html: Added.
        * demos/hover-summary/horizontal-triangle.png: Added.
        * demos/hover-summary/vertical-triangle.png: Added.

2010-02-02  Jens Alfke  <snej@chromium.org>

        Reviewed by David Levin.

        Clarified coding guidelines on wiki to allow indentation of
        _nested_ namespaces.
        https://bugs.webkit.org/show_bug.cgi?id=32137

        * coding/coding-style.html:

2010-01-24  Chris Jerdonek  <cjerdonek@webkit.org>

        Reviewed by David Kilzer.

        Added to contributing code page a pointer to the preferred
        license text. Also added information about copyright lines.

        https://bugs.webkit.org/show_bug.cgi?id=34017

        * coding/contributing.html:
        * css/main.css:
          - Added CSS class for books.

2010-01-21  Chris Jerdonek  <cjerdonek@webkit.org>

        Reviewed by David Levin.

        Added screenshots and clearer instructions on how to submit
        a patch for review.

        https://bugs.webkit.org/show_bug.cgi?id=32542

        Also added that a bug report should be selected or created
        prior to submitting a patch.

        * coding/contributing.html:
        * coding/images: Added.
        * coding/images/contribute_add_attachment.png: Added.
        * coding/images/contribute_mark_review.png: Added.

2010-01-11  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed; updated for truth (and readability).

        Fixed some wrong listings and reorganized this page.

        * security/security-group-members.html:

2010-01-06  Dirk Schulze  <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        SVG feImage support
        https://bugs.webkit.org/show_bug.cgi?id=31905

        Update SVG status page. We support feDisplacementMap and feImage now.

        * projects/svg/status.xml:

2009-12-20  Chris Jerdonek  <chris.jerdonek@gmail.com>

        Reviewed by Darin Adler.

        Removed outdated contact information from bug life cycle page.

        https://bugs.webkit.org/show_bug.cgi?id=32494

        * quality/lifecycle.html:

2009-12-13  Dan Bernstein  <mitz@apple.com>

        Reviewed by Sam Weinig.

        Add a style guideline concerning floating point literals
        https://bugs.webkit.org/show_bug.cgi?id=32497

        * coding/coding-style.html:

2009-12-09  Marwan Al Jubeh  <marwan.aljubeh@gmail.com>

        Reviewed by Adam Roben.

        Fixes: https://bugs.webkit.org/show_bug.cgi?id=31228
        Set the WebKitOutputDir, WebKitLibrariesDir and Cygwin environment variables automatically
        in Windows as part of running update_webkit.

        * building/build.html:
         - removed the reference to forgetting to set environment variables as a common source of errors
           on Windows. This is because this patch would make it unnecessary for the user to set these
           variables manually.

2009-12-09  Chris Jerdonek  <chris.jerdonek@gmail.com>

        Reviewed by Darin Adler.

        Added the "using std::foo" rule to the coding style guidelines.

        https://bugs.webkit.org/show_bug.cgi?id=32301

        Added to the coding style guidelines the "using std::foo" rule
        checked by the check-webkit-style script.  Also clarified the
        "using" statement guidelines that apply to implementation files.

        * coding/coding-style.html:

2009-12-05  Chris Jerdonek  <chris.jerdonek@gmail.com>

        Reviewed by Darin Adler.

        Refactored web site documentation so that advice to add
        WebKitTools/Scripts to your shell path does not appear
        on multiple pages.

        https://bugs.webkit.org/show_bug.cgi?id=32112

        * building/build.html:
        * building/checkout.html:
        * building/run.html:
        * coding/coding-style.html:
        * coding/contributing.html:
        * coding/scripts.html: Added.
        * quality/testing.html:

2009-12-04  Marc-Antoine Ruel  <maruel@chromium.org>

        Reviewed by Eric Seidel.

        Add reference to the GTK and QT build wiki pages

        https://bugs.webkit.org/show_bug.cgi?id=32088

        * building/tools.html:
        * css/main.css:

2009-12-01  Chris Jerdonek  <chris.jerdonek@gmail.com>

        Reviewed by Darin Adler.

        Added clarifications to the web site regarding coding style and
        code cleanup--

        https://bugs.webkit.org/show_bug.cgi?id=31618

        Changes include the following:

        - Expanded the style guidelines regarding "using" statements.
        - Made the style guidelines page validate as HTML.
        - Added that legacy WebKit components should not be cleaned up.
        - Added that it is more acceptable to update style when already
          touching code.

        * coding/coding-style.html:
        * coding/contributing.html:
        * projects/cleanup/index.html:

2009-11-18  Eric Seidel  <eric@webkit.org>

        Reviewed by David Levin.

        Make 80 patches a formal requirement for reviewership
        https://bugs.webkit.org/show_bug.cgi?id=31313
        Per discussion on the webkit-reviewers list:
        http://lists.webkit.org/mailman/private.cgi/webkit-reviewers/2009-November/000795.html

        * coding/commit-review-policy.html:

2009-11-18  Daniel Bates  <dbates@webkit.org>

        Reviewed by Eric Seidel.

        https://bugs.webkit.org/show_bug.cgi?id=31610

        Adds property "min-width" to #title so that the width of the title
        element on each page is at least 790px. In particular, this makes
        the page <http://webkit.org/security/security-group-members.html>
        consistent, in appearance, to the rest of the site.

        * css/main.css:

2009-11-16  Sam Weinig  <sam@webkit.org>

        Reviewed by Anders Carlsson.

        Update Security Group Members list.

        * security/security-group-members.html:

2009-11-16  Sam Weinig  <sam@webkit.org>

        Reviewed by Adele Peterson.

        Update Security Group Members list.

        * security/security-group-members.html:

2009-11-13  Chris Jerdonek  <chris.jerdonek@gmail.com>

        Reviewed by Darin Adler.

        Added to the WebKit Coding Style Guidelines not to use
        "using namespace" statements in header files.

        * coding/coding-style.html:

2009-11-10  Oliver Hunt  <oliver@apple.com>

        Reviewed by Maciej Stachowiak.

        Fix WebGL demos to work with renamed WebGL primitives

        * blog-files/webgl/Earth.html:
        * blog-files/webgl/ManyPlanetsDeep.html:
        * blog-files/webgl/SpinningBox.html:
        * blog-files/webgl/SpiritBox.html:
        * blog-files/webgl/TeapotPerPixel.html:
        * blog-files/webgl/TeapotPerVertex.html:
        * blog-files/webgl/WebGL+CSS.html:
        * blog-files/webgl/resources/CanvasMatrix.js:
        (CanvasMatrix4.prototype.getAsWebGLFloatArray):
        * blog-files/webgl/resources/utils3d.js:
        (makeBox):
        (makeSphere):
        (doLoadObj):

2009-11-06  Dirk Schulze  <krit@webkit.org>

        Rubber stamped by Eric Seidel.

        Update SVG status page. We support feMorphology now.
        Set lightning filters to unimplemented.

        * projects/svg/status.xml:

2009-11-06  Jeff Schiller  <codedread@gmail.com>

        Reviewed by Darin Adler.

        SVG Status page update
        https://bugs.webkit.org/show_bug.cgi?id=31179

        * projects/svg/status.xml:

2009-11-03  Darin Adler  <darin@apple.com>

        Set the MIME type for all PNG files in this directory.

        * blog-files/3d-transforms/mighty-cubes.png: Added property svn:mime-type.
        * blog-files/3d-transforms/poster-circle.png: Added property svn:mime-type.
        * blog-files/InspectorDatabaseBrowser.png: Modified property svn:mime-type.
        * blog-files/acid3-100.png: Modified property svn:mime-type.
        * blog-files/acid3-full-rendering-pass.png: Modified property svn:mime-type.
        * blog-files/acid3-rendering-reference.png: Modified property svn:mime-type.
        * blog-files/acid3-screenshot.png: Modified property svn:mime-type.
        * blog-files/acid3-timing-screenshot.png: Modified property svn:mime-type.
        * blog-files/acid3-timing.png: Modified property svn:mime-type.
        * blog-files/bounce.png: Added property svn:mime-type.
        * blog-files/gebcnwebkitonly.png: Modified property svn:mime-type.
        * blog-files/inspector-closure-scope.png: Added property svn:mime-type.
        * blog-files/inspector-console-autocomplete.png: Added property svn:mime-type.
        * blog-files/inspector-databases-panel-query-view.png: Added property svn:mime-type.
        * blog-files/inspector-databases-panel.png: Added property svn:mime-type.
        * blog-files/inspector-disabling-properties.png: Added property svn:mime-type.
        * blog-files/inspector-elements-panel.png: Added property svn:mime-type.
        * blog-files/inspector-event-scope.png: Added property svn:mime-type.
        * blog-files/inspector-profiles-panel.png: Added property svn:mime-type.
        * blog-files/inspector-resources-panel.png: Added property svn:mime-type.
        * blog-files/inspector-scripts-panel.png: Added property svn:mime-type.
        * blog-files/inspector-searching-elements.png: Added property svn:mime-type.
        * blog-files/inspector-searching-profiles.png: Added property svn:mime-type.
        * blog-files/inspector-status-bar-with-errors.png: Added property svn:mime-type.
        * blog-files/inspector-toolbar.png: Added property svn:mime-type.
        * blog-files/inspector-with-scope.png: Added property svn:mime-type.
        * blog-files/inspector/breakpoints.png: Added property svn:mime-type.
        * blog-files/inspector/colors.png: Added property svn:mime-type.
        * blog-files/inspector/cookies.png: Added property svn:mime-type.
        * blog-files/inspector/css_selectors.png: Added property svn:mime-type.
        * blog-files/inspector/css_syntax_highlight.png: Added property svn:mime-type.
        * blog-files/inspector/dom_storage.png: Added property svn:mime-type.
        * blog-files/inspector/edit_attributes.png: Added property svn:mime-type.
        * blog-files/inspector/enable.png: Added property svn:mime-type.
        * blog-files/inspector/event_listeners.png: Added property svn:mime-type.
        * blog-files/inspector/form_data.png: Added property svn:mime-type.
        * blog-files/inspector/inline_highlight.png: Added property svn:mime-type.
        * blog-files/inspector/inorder.png: Added property svn:mime-type.
        * blog-files/inspector/inspect_inspector.png: Added property svn:mime-type.
        * blog-files/inspector/inspect_inspector_small.png: Added property svn:mime-type.
        * blog-files/inspector/load_lines.png: Added property svn:mime-type.
        * blog-files/inspector/nodelist.png: Added property svn:mime-type.
        * blog-files/inspector/scope_bar.png: Added property svn:mime-type.
        * blog-files/inspector/watched_expression.png: Added property svn:mime-type.
        * blog-files/kate-circle.png: Modified property svn:mime-type.
        * blog-files/kate-gradient-rounded.png: Modified property svn:mime-type.
        * blog-files/kate-gradient.png: Modified property svn:mime-type.
        * blog-files/kate-reflected.png: Modified property svn:mime-type.
        * blog-files/kate-vignette-mask.png: Modified property svn:mime-type.
        * blog-files/kate.png: Modified property svn:mime-type.
        * blog-files/leaves/images/apple-touch-icon.png: Added property svn:mime-type.
        * blog-files/leaves/images/realLeaf1.png: Added property svn:mime-type.
        * blog-files/leaves/images/realLeaf2.png: Added property svn:mime-type.
        * blog-files/leaves/images/realLeaf3.png: Added property svn:mime-type.
        * blog-files/leaves/images/realLeaf4.png: Added property svn:mime-type.
        * blog-files/leaves/images/textBackground.png: Added property svn:mime-type.
        * blog-files/maskspeedracer.png: Modified property svn:mime-type.
        * blog-files/pulse.png: Added property svn:mime-type.
        * blog-files/scrollbarpicture.png: Modified property svn:mime-type.
        * blog-files/sfx-perf.png: Modified property svn:mime-type.
        * blog-files/squirrelfish-webkit-graph.png: Modified property svn:mime-type.
        * blog-files/squirrelfish.png: Modified property svn:mime-type.
        * blog-files/vignette-mask.png: Modified property svn:mime-type.
        * blog-files/webgl/resources/mars500x250.png: Modified property svn:mime-type.
        * blog-files/wsj-nopreload.png: Modified property svn:mime-type.
        * blog-files/wsj-preload.png: Modified property svn:mime-type.
        * blog-files/wsj-vs.png: Modified property svn:mime-type.
        * blog/wp-admin/images/align-center.png: Added property svn:mime-type.
        * blog/wp-admin/images/align-left.png: Added property svn:mime-type.
        * blog/wp-admin/images/align-none.png: Added property svn:mime-type.
        * blog/wp-admin/images/align-right.png: Added property svn:mime-type.
        * blog/wp-admin/images/archive-link.png: Added property svn:mime-type.
        * blog/wp-admin/images/blue-grad.png: Added property svn:mime-type.
        * blog/wp-admin/images/button-grad-active-vs.png: Added property svn:mime-type.
        * blog/wp-admin/images/button-grad-active.png: Added property svn:mime-type.
        * blog/wp-admin/images/button-grad-vs.png: Added property svn:mime-type.
        * blog/wp-admin/images/button-grad.png: Added property svn:mime-type.
        * blog/wp-admin/images/comment-grey-bubble.png: Added property svn:mime-type.
        * blog/wp-admin/images/fade-butt.png: Modified property svn:mime-type.
        * blog/wp-admin/images/fav-top.png: Added property svn:mime-type.
        * blog/wp-admin/images/fav-vs.png: Added property svn:mime-type.
        * blog/wp-admin/images/fav.png: Added property svn:mime-type.
        * blog/wp-admin/images/generic.png: Added property svn:mime-type.
        * blog/wp-admin/images/gray-grad.png: Added property svn:mime-type.
        * blog/wp-admin/images/icons32-vs.png: Added property svn:mime-type.
        * blog/wp-admin/images/icons32.png: Added property svn:mime-type.
        * blog/wp-admin/images/list-vs.png: Added property svn:mime-type.
        * blog/wp-admin/images/list.png: Added property svn:mime-type.
        * blog/wp-admin/images/logo-ghost.png: Added property svn:mime-type.
        * blog/wp-admin/images/marker.png: Added property svn:mime-type.
        * blog/wp-admin/images/mask.png: Added property svn:mime-type.
        * blog/wp-admin/images/menu-vs.png: Added property svn:mime-type.
        * blog/wp-admin/images/menu.png: Added property svn:mime-type.
        * blog/wp-admin/images/no.png: Added property svn:mime-type.
        * blog/wp-admin/images/se.png: Added property svn:mime-type.
        * blog/wp-admin/images/wheel.png: Added property svn:mime-type.
        * blog/wp-admin/images/white-grad-active.png: Added property svn:mime-type.
        * blog/wp-admin/images/white-grad.png: Added property svn:mime-type.
        * blog/wp-admin/images/wordpress-logo.png: Modified property svn:mime-type.
        * blog/wp-admin/images/yes.png: Added property svn:mime-type.
        * blog/wp-content/Picture9.png: Modified property svn:mime-type.
        * blog/wp-content/chucknorris.png: Modified property svn:mime-type.
        * blog/wp-content/databaseexample.png: Modified property svn:mime-type.
        * blog/wp-content/drosera.png: Modified property svn:mime-type.
        * blog/wp-content/hitlist.png: Modified property svn:mime-type.
        * blog/wp-content/rotate.png: Modified property svn:mime-type.
        * blog/wp-content/svgtext.png: Modified property svn:mime-type.
        * blog/wp-content/svgtextmini.png: Modified property svn:mime-type.
        * blog/wp-content/svgtextmini_01.png: Modified property svn:mime-type.
        * blog/wp-content/themes/classic/screenshot.png: Modified property svn:mime-type.
        * blog/wp-content/themes/default/screenshot.png: Modified property svn:mime-type.
        * blog/wp-content/uploads/2007/06/newinspector.png: Modified property svn:mime-type.
        * blog/wp-content/webInspector.png: Modified property svn:mime-type.
        * blog/wp-includes/images/crystal/archive.png: Added property svn:mime-type.
        * blog/wp-includes/images/crystal/audio.png: Added property svn:mime-type.
        * blog/wp-includes/images/crystal/code.png: Added property svn:mime-type.
        * blog/wp-includes/images/crystal/default.png: Added property svn:mime-type.
        * blog/wp-includes/images/crystal/document.png: Added property svn:mime-type.
        * blog/wp-includes/images/crystal/interactive.png: Added property svn:mime-type.
        * blog/wp-includes/images/crystal/spreadsheet.png: Added property svn:mime-type.
        * blog/wp-includes/images/crystal/text.png: Added property svn:mime-type.
        * blog/wp-includes/images/crystal/video.png: Added property svn:mime-type.
        * blog/wp-includes/images/rss.png: Modified property svn:mime-type.
        * blog/wp-includes/images/upload.png: Added property svn:mime-type.
        * blog/wp-includes/images/wlw/wp-comments.png: Added property svn:mime-type.
        * blog/wp-includes/images/wlw/wp-icon.png: Added property svn:mime-type.
        * blog/wp-includes/images/wlw/wp-watermark.png: Added property svn:mime-type.
        * blog/wp-includes/js/codepress/images/line-numbers.png: Added property svn:mime-type.
        * blog/wp-includes/js/thickbox/macFFBgHack.png: Added property svn:mime-type.
        * blog/wp-includes/js/thickbox/tb-close.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/plugins/wpeditimage/img/delete.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/plugins/wpeditimage/img/image.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/plugins/wpgallery/img/delete.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/plugins/wpgallery/img/edit.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/themes/advanced/img/gotmoxie.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/themes/advanced/img/sflogo.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/default/img/buttons.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img/button_bg.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/butt2.png: Added property svn:mime-type.
        * blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/button_bg.png: Added property svn:mime-type.
        * demos/calendar/Images/AirPort4.png: Modified property svn:mime-type.
        * demos/calendar/Images/AirPortError.png: Modified property svn:mime-type.
        * demos/calendar/Images/disclosureTriangleSmallDown.png: Modified property svn:mime-type.
        * demos/calendar/Images/disclosureTriangleSmallRight.png: Modified property svn:mime-type.
        * demos/calendar/Images/statusbarBackground.png: Modified property svn:mime-type.
        * demos/calendar/Images/statusbarResizerVertical.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/button.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/buttonLeft.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/buttonMiddle.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/buttonPressed.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/buttonPressedLeft.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/buttonPressedMiddle.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/buttonPressedRight.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/buttonRight.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/camera.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/link.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/textAlign.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutline.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineBottom.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineBottomLeft.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineBottomRight.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineLeft.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineRight.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineTop.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineTopLeft.png: Modified property svn:mime-type.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineTopRight.png: Modified property svn:mime-type.
        * demos/editingToolbar/images/safari.png: Modified property svn:mime-type.
        * demos/sticky-notes/deleteButton.png: Added property svn:mime-type.
        * demos/sticky-notes/deleteButtonPressed.png: Added property svn:mime-type.
        * demos/transitions-and-transforms/Horsehead.png: Modified property svn:mime-type.
        * demos/transitions-and-transforms/Spaces.png: Modified property svn:mime-type.
        * demos/transitions-and-transforms/Stacks.png: Modified property svn:mime-type.
        * images/DroseraPic.png: Modified property svn:mime-type.
        * misc/drosera/drosera.png: Modified property svn:mime-type.
        * perf/slickspeed/logo.png: Modified property svn:mime-type.

2009-11-03  Joseph Pecoraro  <joepeck@webkit.org>

        Reviewed by Timothy Hatcher.

        Adding images for an upcoming blog post.

        * blog-files/inspector/breakpoints.png: Added.
        * blog-files/inspector/colors.png: Added.
        * blog-files/inspector/cookies.png: Added.
        * blog-files/inspector/css_selectors.png: Added.
        * blog-files/inspector/css_syntax_highlight.png: Added.
        * blog-files/inspector/dom_storage.png: Added.
        * blog-files/inspector/edit_attributes.png: Added.
        * blog-files/inspector/enable.png: Added.
        * blog-files/inspector/event_listeners.png: Added.
        * blog-files/inspector/form_data.png: Added.
        * blog-files/inspector/inline_highlight.png: Added.
        * blog-files/inspector/inorder.png: Added.
        * blog-files/inspector/inspect_inspector.png: Added.
        * blog-files/inspector/inspect_inspector_small.png: Added.
        * blog-files/inspector/load_lines.png: Added.
        * blog-files/inspector/nodelist.png: Added.
        * blog-files/inspector/scope_bar.png: Added.
        * blog-files/inspector/watched_expression.png: Added.

2009-10-26  Dan Bernstein  <mitz@apple.com>

        Reviewed by Adele Peterson.

        Updated BSD License

        * coding/bsd-license.html: Updated to the latest version.

2009-10-22  Mark Rowe  <mrowe@apple.com>

        Update to WordPress 2.8.5.

        * blog:

2009-10-19  Andrew Scherkus  <scherkus@chromium.org>

        Reviewed by Eric Seidel.

        Replace boolean operator indentation example with an if statement.

        https://bugs.webkit.org/show_bug.cgi?id=30538

        * coding/coding-style.html: Replace boolean indenting example to use "if"

2009-10-16  Darin Adler  <darin@apple.com>

        * coding/RefPtr.html: Minor revision, updating a link and tweaking
        wording a bit in few places.

2009-10-14  Evan Martin  <evan@chromium.org>

        Reviewed by Darin Adler.

        Document what state the build tree is expected to be in after a patch.

        * coding/contributing.html:

2009-10-11  Cameron McCormack  <cam@mcc.id.au>

        Reviewed by Eric Seidel.

        Change <a name> to id="" to fix styling problems
        https://bugs.webkit.org/show_bug.cgi?id=30283

        This prevents the headings from being styled like links.

        * coding/contributing.html:

2009-10-08  Alex Milowski  <alex@milowski.com>

        Reviewed by Darin Adler.

        Added a basic description of the layout and rendering project and added links to the blog entries on rendering.

        * projects/layout/index.html:

2009-10-07  Sam Weinig  <sam@webkit.org>

        Reviewed by Dan Bernstein.

        Fix for https://bugs.webkit.org/show_bug.cgi?id=30196
        Change style guidelines for indentation in header files

        * coding/coding-style.html: Don't indent in a namespace in a header file.

2009-10-07  Steve Falkenburg  <sfalken@apple.com>

        Reviewed by Mark Rowe.

        Add new Windows build prerequisite: Visual Studio 2005 Service Pack 1 ATL Security Update

        * building/tools.html:

2009-10-06  Jeremy Orlow  <jorlow@chromium.org>

        Reviewed by Adam Barth.

        Diagram needs to be linked from the home page
        https://bugs.webkit.org/show_bug.cgi?id=30142

        http://webkit.org/coding/major-objects.html was never linked from the home
        page.

        * nav.inc:

2009-09-28  Alex Milowski  <alex@milowski.com>

        <http://webkit.org/b/29098> Update to MathML project webpage

        Reviewed by David Kilzer.

        Updated MathML project page and added link to Wiki page.

        * projects/mathml/index.html:

2009-09-21  Brady Eidson  <beidson@apple.com>

        Reviewed by Darin Adler.

        Add coding style guidelines for 'using namespace.'
        https://bugs.webkit.org/show_bug.cgi?id=29499

        * coding/coding-style.html:

2009-09-21  Brady Eidson  <beidson@apple.com>

        Rubberstamped by Sam Weinig.

        Add some example files for an upcoming blog post.

        * blog-files/load-unload-example.html: Added.
        * blog-files/pageshow-pagehide-example.html: Added.

2009-09-17  Eric Seidel  <eric@webkit.org>

        Reviewed by Darin Adler.

        Update contributing.html to mention recently added tools.
        https://bugs.webkit.org/show_bug.cgi?id=29318

        Update our contributing instructions to mention
        the new tools (check-webkit-style and commit-queue)
        recently added to make contributions easier.

        * coding/contributing.html:
         - Mention check-webkit-style as an optional helper tool.
         - Mention checking the 'patch' checkbox.
         - Mention the commit-queue as an optional helper tool.
         - Remove "or in email" since patch reviews are all done via bugzilla.
         - Encourage contributers to be responsible for getting their patch landed.  Provide a list of committers.
         - Mention commit-queue as an optional help in getting your patch landed.
         - Give an overview of the commit-queue process and link to the Commit Queue docs.

2009-09-09  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        Reviewed by Mark Rowe.

        Add instructions to bug reporting guidlines on how and when
        to apply port-specific keywords.

        * quality/bugwriting.html:

2009-09-08  Sam Weinig  <sam@webkit.org>

        Reviewed by Adele Peterson.

        Update Security Group Members list.

        * security/security-group-members.html:

2009-09-06  Cameron McCormack  <cam@mcc.id.au>

        Reviewed by Eric Seidel.

        Drop <definition-src> support
        https://bugs.webkit.org/show_bug.cgi?id=28991

        When SVG 1.1 Second Edition is a Recommendation we can remove the
        entry altogether.

        * projects/svg/status.xml: Update page to state that <definition-src>
        is not supported.

2009-08-26  Mark Rowe  <mrowe@apple.com>

        Upgrade WordPress to the latest version.

        * blog/wp-includes/version.php:
        * blog/wp-login.php:

2009-08-20  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        major-objects.html should show direct Frame <-> Document pointers
        https://bugs.webkit.org/show_bug.cgi?id=28479

        * coding/major-objects.html: Added pointers to diagram.

2009-08-18  Anton Muhin  <antonm@chromium.org>

        Reviewed by Adam Barth.

        Mention handy --bug flag of prepare-ChangeLog script.
        https://bugs.webkit.org/show_bug.cgi?id=28425

        * coding/contributing.html: Add a reference for --bug flag

2009-08-12  Joe Mason  <joe.mason@torchmobile.com>

        Reviewed by Adam Barth.

        Better explanation of "Null after navigation" in object diagram
        https://bugs.webkit.org/show_bug.cgi?id=28232

        * coding/major-objects.html:

2009-08-11  Adam Barth  <abarth@webkit.org>

        Unreviewed.

        Remove a few characters from the ASCII art to make it fit better in the
        template.

        * coding/major-objects.html:

2009-08-11  Adam Barth  <abarth@webkit.org>

        Reviewed by Oliver Hunt.

        Document relation between major objects in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=28210

        Added a diagram showing the relation between major objects.

        * coding/major-objects.html: Added.

2009-08-07  Joseph Pecoraro  <joepeck02@gmail.com>

        Reviewed by Oliver Hunt.

        Fix webkit-jobs link

        * contact.html:

2009-08-03  Mark Rowe  <mrowe@apple.com>

        Update two WordPress plug-ins that we use.

        * blog/wp-content/plugins/akismet/akismet.php:
        * blog/wp-content/plugins/akismet/readme.txt:
        * blog/wp-content/plugins/commentcontrol.php:

2009-08-03  Mark Rowe  <mrowe@apple.com>

        Add some missing files and delete some obsolete files.

        * blog:

2009-08-03  Mark Rowe  <mrowe@apple.com>

        Update WordPress to the latest version.

        * blog:

2009-07-22  Holger Hans Peter Freyther  <zecke@selfish.org>

        Reviewed by Adam Treat.

        Mention the new webkit-help and webkit-jobs mailinglist. Change
        the description of webkit-dev to be more strict.

        * contact.html:

2009-07-22  Kenneth Rohde Christiansen  <kenneth@webkit.org>

        Reviewed by Adam Treat.

        Coding style - Clarify some cases with spacing
        https://bugs.webkit.org/show_bug.cgi?id=27499

        Add explicit rule about no space before comma or semicolon.

        * coding/coding-style.html:

2009-07-17  Simon Fraser  <simon.fraser@apple.com>

        Fix the font to match the rest of the blog site.

        * blog-files/3d-transforms/image-flip.html:

2009-07-17  Simon Fraser  <simon.fraser@apple.com>

        Move the image flip effect into an iframe to avoid the long
        blog page tripping a bug on Leopard.

        * blog-files/3d-transforms/image-flip.html: Added.

2009-07-16  Simon Fraser  <simon.fraser@apple.com>

        New demo files for an up-coming blog post.

        * blog-files/3d-transforms/mighty-cubes.png: Added.
        * blog-files/3d-transforms/morphing-cubes.html: Added.
        * blog-files/3d-transforms/perspective-by-example.html: Added.
        * blog-files/3d-transforms/poster-circle.html: Added.
        * blog-files/3d-transforms/poster-circle.png: Added.
        * blog-files/3d-transforms/transform-style.html: Added.

2009-07-15  Joseph Pecoraro  <joepeck02@gmail.com>

        Reviewed by Sam Weinig.

        Side bar linking to "DOM Interfaces" returns 404
        https://bugs.webkit.org/show_bug.cgi?id=24000

        * nav.inc:

2009-07-09  Oliver Hunt  <oliver@apple.com>

        Reviewed by Geoff Garen.

        JavaScript section of http://webkit.org is excessively out of date.

        This removes old todo entries (like adding an API, which we've had since Leopard),
        and adds an additional todo for a webkit-less Objective-C API.

        * projects/javascript/index.html:

2009-07-03  Adam Barth  <abarth@webkit.org>

        Reviewed by Sam Weinig.

        Adam and Collin's affiliation is incorrect
        https://bugs.webkit.org/show_bug.cgi?id=26954

        This change corrects their affiliation.

        * security/security-group-members.html:

2009-06-24  Brady Eidson  <beidson@apple.com>

        Reviewed by Mark Rowe

        * demos/index.html: Fix more typos etc.

2009-06-17  Sam Weinig  <sam@webkit.org>

        Reviewed by Mark Rowe.

        * security/index.html: Fix some typos.

2009-06-17  Sam Weinig  <sam@webkit.org>

        Reviewed by Mark Rowe.

        Move security policy to security/index.html so that
        webkit.org/security/ works.

        * nav.inc:
        * security/index.html: Copied from security/security-policy.html.
        * security/security-policy.html: Removed.

2009-06-13  Sam Weinig  <sam@webkit.org>

        Reviewed by Timothy Hatcher.

        Add WebKit Security Policy and member list of the WebKit Security Group.

        * nav.inc:
        * security: Added.
        * security/security-group-members.html: Added.
        * security/security-policy.html: Added.

2009-06-12  Brady Eidson  <beidson@apple.com>

        Reviewed by Oliver Hunt

        Add a page indexing the various demo applications we have posted.

        * demos/index.html: Added.
        * nav.inc: Add a link to the demos page on the side bar
        * css/main.css:  Add a style for date stamps based on the blog.

        * demos/calendar/index.html: Added to redirect to Calendar.html.  I'm not moving Calendar.html to
          index.html as the Calendar.html url has already been published and we should keep it working.

        Move the drosera test code to /misc, as it is no longer a meaningful demo:
        * demos/drosera: Removed.
        * demos/drosera/demo.js: Removed.
        * demos/drosera/drosera.png: Removed.
        * demos/drosera/index.html: Removed.
        * misc/drosera: Copied from demos/drosera.

        Move the sticky notes example into /demos:
        * demos/sticky-notes: Added.
        * demos/sticky-notes/StickyNotes.manifest: Copied from misc/DatabaseExample.manifest.
        * demos/sticky-notes/deleteButton.png: Copied from misc/deleteButton.png.
        * demos/sticky-notes/deleteButtonPressed.png: Copied from misc/deleteButtonPressed.png.
        * demos/sticky-notes/index.html: Copied from misc/DatabaseExample.html.
        * misc/DatabaseExample.html: Changed to redirect to demos/sticky-notes/index.html.  I'm not removing
          it altogether as the misc/DatabaseExample.html url has already been published and we should keep it working.
        * misc/DatabaseExample.manifest: Removed.
        * misc/deleteButton.png: Removed.
        * misc/deleteButtonPressed.png: Removed.

2009-06-10  Brent Fulgham  <bfulgham@webkit.org>

        Reviewed by Eric Seidel.

        Fixes https://bugs.webkit.org/show_bug.cgi?id=26309.
        Update a few items in the testing language to:
        (1) Reflect results are now generated with Leopard (not Tiger)
        (2) Explain how to generate pixel-level layout tests.

        * quality/testing.html:
        * quality/testwriting.html:

2009-06-05  Kenneth Rohde Christiansen  <kenneth.christiansen@openbossa.com>

        Bug 26188: Clarify some of the cases in the coding style guide

        <https://bugs.webkit.org/show_bug.cgi?id=26188>

        Reviewed and tweaked by David Kilzer.

        Changed the coding style document to clarify some cases of ambiguity.

        * coding/coding-style.html:

2009-05-27  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed, demo content.

        - Add doctype to Calendar demo.

        * demos/calendar/Calendar.html:

2009-05-27  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed, demo content.

        - add Calendar demo.

        * demos/calendar: Added.
        * demos/calendar/Boom.aiff: Added.
        * demos/calendar/Calendar.css: Added.
        * demos/calendar/Calendar.html: Added.
        * demos/calendar/Calendar.js: Added.
        * demos/calendar/Calendar.manifest: Added.
        * demos/calendar/CalendarApp.icns: Added.
        * demos/calendar/Images: Added.
        * demos/calendar/Images/AirPort4.png: Added.
        * demos/calendar/Images/AirPortError.png: Added.
        * demos/calendar/Images/disclosureTriangleSmallDown.png: Added.
        * demos/calendar/Images/disclosureTriangleSmallRight.png: Added.
        * demos/calendar/Images/statusbarBackground.png: Added.
        * demos/calendar/Images/statusbarResizerVertical.png: Added.
        * demos/calendar/LocationImage.js: Added.
        * demos/calendar/Utilities.js: Added.
        * demos/calendar/favicon.ico: Added.
        * demos/calendar/mime.types: Added.

2009-05-20  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Eric Seidel.

        Prevent search engines from getting creative in their descriptions of webkit.org content.

        * blog/wp-content/themes/webkit/header.php:
        * header.inc:

2009-05-06  Eric Seidel  <eric@webkit.org>

        Reviewed by Maciej Stachowiak.

        Update Contributing instructions after feedback from Julie Parent.
        https://bugs.webkit.org/show_bug.cgi?id=25611

        * coding/contributing.html: Add a few more comments on ChangeLogs

2009-04-17  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Steve Falkenburg

        Fix the link for setting the Platform SDK paths in the Windows instructions.

        * building/build.html:

2009-04-15  Alexey Proskuryakov  <ap@webkit.org>

        Reviewed by Darin Adler.

        https://bugs.webkit.org/show_bug.cgi?id=25186
        There is no XSLT component in bugzilla

        * projects/xslt/index.html: Changed to search by bug title.

2009-02-20  David Kilzer  <ddkilzer@apple.com>

        Bug 23983: Remove illegal HTML tags from Sunspider web pages

        <https://bugs.webkit.org/show_bug.cgi?id=23983>

        Reviewed by Alexey Proskuryakov.

        * perf/sunspider-0.9/3d-cube.html: Removed </link> tag.
        * perf/sunspider-0.9/3d-morph.html: Ditto.
        * perf/sunspider-0.9/3d-raytrace.html: Ditto.
        * perf/sunspider-0.9/access-binary-trees.html: Ditto.
        * perf/sunspider-0.9/access-fannkuch.html: Ditto.
        * perf/sunspider-0.9/access-nbody.html: Ditto.
        * perf/sunspider-0.9/access-nsieve.html: Ditto.
        * perf/sunspider-0.9/bitops-3bit-bits-in-byte.html: Ditto.
        * perf/sunspider-0.9/bitops-bits-in-byte.html: Ditto.
        * perf/sunspider-0.9/bitops-bitwise-and.html: Ditto.
        * perf/sunspider-0.9/bitops-nsieve-bits.html: Ditto.
        * perf/sunspider-0.9/controlflow-recursive.html: Ditto.
        * perf/sunspider-0.9/crypto-aes.html: Ditto.
        * perf/sunspider-0.9/crypto-md5.html: Ditto.
        * perf/sunspider-0.9/crypto-sha1.html: Ditto.
        * perf/sunspider-0.9/date-format-tofte.html: Ditto.
        * perf/sunspider-0.9/date-format-xparb.html: Ditto.
        * perf/sunspider-0.9/math-cordic.html: Ditto.
        * perf/sunspider-0.9/math-partial-sums.html: Ditto.
        * perf/sunspider-0.9/math-spectral-norm.html: Ditto.
        * perf/sunspider-0.9/regexp-dna.html: Ditto.
        * perf/sunspider-0.9/string-base64.html: Ditto.
        * perf/sunspider-0.9/string-fasta.html: Ditto.
        * perf/sunspider-0.9/string-tagcloud.html: Ditto.
        * perf/sunspider-0.9/string-unpack-code.html: Ditto.
        * perf/sunspider-0.9/string-validate-input.html: Ditto.
        * perf/sunspider-0.9/sunspider-driver.html: Ditto.
        * perf/sunspider-0.9/sunspider-results.html: Removed </link> and </input> tags.
        * perf/sunspider-0.9/sunspider.html: Removed </link> tag.

2009-01-19  Adam Roben  <aroben@apple.com>

        Add links to some recommended Visual Studio hotfixes

        Reviewed by Dave Hyatt.

        * building/tools.html:

2009-01-08  Brent Fulgham  <bfulgham@gmail.com>

        Reviewed by Adele Petersen.
        Landed by Pamela Greene.

        Fixes: http://bugs.webkit.org/show_bug.cgi?id=23139
        Remove links to no-longer-existing Drosera project.
        Also, clean up references to wiki in the nav.inc file.

        * nav.inc: Correct paths to wiki, swap Drosera for Web Inspector.

2008-12-30  Brent Fulgham  <bfulgham@gmail.com>

        Reviewed by Darin Adler.
        Landed by Pamela Greene.

        Fixes: https://bugs.webkit.org/show_bug.cgi?id=22908.
        Update website so that newbies are told they must set the
        WebKitOutputDir to get a valid build.

        * building/build.html: Add language (and link) indicating the
        importance of setting the WebKitOutputDir variable, as well
        as a link to instructions on how to do so.

2008-12-19  Dean Jackson  <dino@apple.com>

        Media queries that return <integer> but are really boolean
        are restricted to 0 and 1. This is in line with other
        media features.

        * specs/MediaQueriesExtensions.html:

2008-12-03  Dean Jackson  <dino@apple.com>

        Added links to the WebKit and Mozilla bugs for pointer-events.

        * specs/PointerEventsProperty.html:

2008-11-27  Julien Chaffraix  <jchaffraix@webkit.org>

        Reviewed by Eric Seidel.

        Bug 22468: Coding style: config.h should only be included in implementation files, not in header
        https://bugs.webkit.org/show_bug.cgi?id=22468

        Clarified the rules about config.h inclusion and added 2 new examples to illustrate it. Also
        added an explanation about the implementation files.

        * coding/coding-style.html:

2008-11-25  Dean Jackson  <dino@apple.com>

        Add a new work-in-progress proposal for pointer-events in
        HTML content. Also note that the Media Queries extensions
        are not at all official.

        * specs/MediaQueriesExtensions.html:
        * specs/PointerEventsProperty.html: Added.
        * specs/index.html:

2008-11-25  Jack Wootten  <jackwootton@gmail.com>

        Bug 20125: http://webkit.org/ missing link to key documentation for new developers.

        <https://bugs.webkit.org/show_bug.cgi?id=20125>

        Reviewed by David Kilzer.

        * projects/documentation/index.html: Added link to "Introduction to
        WebKit Objective-C Programming Guide".

2008-11-24  Dean Jackson  <dino@apple.com>

        Document the work-in-progress proposed extensions to
        CSS 3 Media Queries.

        * specs/MediaQueriesExtensions.html: Added.
        * specs/index.html:

2008-11-17  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Sam Weinig and Antti Koivisto.

        Clarified the last coding style rule, which was a baffling in its
        initial form.

        (Now let's see if our code ever starts following this rule!)

        * coding/coding-style.html:

2008-11-17  Brady Eidson  <beidson@apple.com>

        Reviewed by Mark Rowe

        Clarify an edge case for acronym capitalization.

        * coding/coding-style.html:

2008-11-11  Simon Fraser  <simon.fraser@apple.com>

        Update leaves animation sample.

        * blog-files/leaves/index.html:
        * blog-files/leaves/leaves.css:

2008-11-11  Dean Jackson  <dino@apple.com>

        Removed quotes in animation name value.

        * blog-files/pulse.html:

2008-11-11  Dean Jackson  <dino@apple.com>

        Added a smaller version of a screenshot.

        * blog-files/leaves-screenshot-small.jpg: Added.

2008-11-11  Dean Jackson  <dino@apple.com>

        Add a bunch of examples for CSS Animation blog draft.

        * blog-files/bounce.html: Added.
        * blog-files/bounce.png: Added.
        * blog-files/leaves-screenshot.jpg: Added.
        * blog-files/leaves/images/apple-touch-icon.png: Added.
        * blog-files/leaves/images/backgroundLeaves.jpg: Added.
        * blog-files/leaves/images/realLeaf1.png: Added.
        * blog-files/leaves/images/realLeaf2.png: Added.
        * blog-files/leaves/images/realLeaf3.png: Added.
        * blog-files/leaves/images/realLeaf4.png: Added.
        * blog-files/leaves/images/textBackground.png: Added.
        * blog-files/leaves/index.html: Added.
        * blog-files/leaves/leaves.css: Added.
        * blog-files/leaves/leaves.js: Added.
        * blog-files/pulse.html: Added.
        * blog-files/pulse.png: Added.

2008-10-30  Cameron Zwarich  <zwarich@apple.com>

        Rubber-stamped by Mark Rowe.

        Update the link to Mac Subversion binaries.

        * building/tools.html:

2008-10-27  Antti Koivisto  <antti@apple.com>

        Add a file.

        * blog-files/squirrelfish-link-animated.svg: Added.

2008-10-27  Antti Koivisto  <antti@apple.com>

        Add some svg files.

        * blog-files/cubes-7.svg: Added.
        * blog-files/number-morph.svg: Added.

2008-10-07  Darin Adler  <darin@apple.com>

        * coding/RefPtr.html: Second draft.

2008-10-04  Mark Rowe  <mrowe@apple.com>

        Upgrade to WordPress 2.6.2.

        * blog:

2008-09-26  Timothy Hatcher  <timothy@apple.com>

        Add screenshots of searching in the Web Inspector.

        Not reviewed.

        * blog-files/inspector-searching-elements.png: Added.
        * blog-files/inspector-searching-profiles.png: Added.

2008-09-25  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed.

        - add some screenshots.

        * blog-files/acid3-screenshot.png: Added.
        * blog-files/acid3-timing-screenshot.png: Added.

2008-09-25  Darin Adler  <darin@apple.com>

        * contact.html: Take a cut at making the role of webkitsdk-dev
        clearer, specifying that it's Mac OS X specific and hosted at
        Apple, not WebKit.

2008-09-24  Timothy Hatcher  <timothy@apple.com>

        Add new screenshots of the Web Inspector's Scope Variables pane.

        Not reviewed.

        * blog-files/inspector-closure-scope.png: Added.
        * blog-files/inspector-event-scope.png: Added.
        * blog-files/inspector-with-scope.png: Added.

2008-09-24  Timothy Hatcher  <timothy@apple.com>

        Add another screenshot of the Web Inspector.

        Not reviewed.

        * blog-files/inspector-disabling-properties.png: Added.

2008-09-24  Timothy Hatcher  <timothy@apple.com>

        Add new screenshots of the Web Inspector.

        Not reviewed.

        * blog-files/inspector-console-autocomplete.png: Added.
        * blog-files/inspector-databases-panel-query-view.png: Added.
        * blog-files/inspector-databases-panel.png: Added.
        * blog-files/inspector-elements-panel.png: Added.
        * blog-files/inspector-numeric-style-stepping.gif: Added.
        * blog-files/inspector-profiles-panel.png: Added.
        * blog-files/inspector-resources-panel.png: Added.
        * blog-files/inspector-scripts-panel.png: Added.
        * blog-files/inspector-status-bar-with-errors.png: Added.
        * blog-files/inspector-toolbar.png: Added.

2008-09-24  Timothy Hatcher  <timothy@apple.com>

        Not reviewed.

        * demos/drosera/demo.js: Add some console.profile() calls.

2008-09-22  Alexander Orlov  <alexander.orlov@loxal.net>

        Reviewed by Darin Adler.

        * projects/performance/index.html: Remove dead link to the 24fun test.

2008-09-18  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed.

        * blog-files/animation-demo.svg: Added.

2008-09-18  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed.

        * blog-files/sfx-perf.png: Added.

2008-08-25  Mark Rowe  <mrowe@apple.com>

        Reviewed by Dan Bernstein.

        Modernize the bug reporting guidelines and make them a little less Mac-specific.

        * quality/bugwriting.html:

2008-08-18  Mark Rowe  <mrowe@apple.com>

        Upgrade to WordPress 2.6.1.

        * blog:

2008-08-01  Adam Roben  <aroben@apple.com>

        Add a link to the instructions to use Apple's Safari for Windows
        symbol server

        Reviewed by Eric Seidel.

        * building/debug.html:

2008-07-28  Robert Blaut  <webkit@blaut.biz>

        Reviewed by Mark Rowe.

        Fix for bug: Website provides no guidance on debugging
        <https://bugs.webkit.org/show_bug.cgi?id=3643>

        * building/debug.html: added info about Xcode Debugging Guide.

2008-07-26  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Oliver Hunt.

        Update the Squirrelfish bytecode documentation.

        * specs/squirrelfish-bytecode.html:

2008-07-26  Robert Blaut  <webkit@blaut.biz>

        Reviewed by Eric Seidel.

        Fix for <https://bugs.webkit.org/show_bug.cgi?id=19712>
        Corrected validation errors in main.css file.

        * css/main.css:

2008-07-26  Robert Blaut  <webkit@blaut.biz>

        Reviewed by Alexey Proskuryakov.

        Fix for bug: <https://bugs.webkit.org/show_bug.cgi?id=18186>
        Added notes about unsupported Visual Studio versions.

        * building/tools.html:

2008-07-26  Robert Blaut  <webkit@blaut.biz>

        Reviewed by Eric Seidel.

        Fix for <https://bugs.webkit.org/show_bug.cgi?id=16719>
        Removed basic requirements for undetected version of WebKit.

        * quality/reporting.html:

2008-07-26  Robert Blaut  <webkit@blaut.biz>

        Reviewed by Adele Petersen.

        Fix for bug 7436: Truncated title on webkit DOM page.
        <https://bugs.webkit.org/show_bug.cgi?id=7436>

        * projects/dom/index.html: Added basic project informations.

2008-07-24  Adam Roben  <aroben@apple.com>

        Remove some redundant text accidentally checked in

        * building/tools.html:

2008-07-24  Adam Roben  <aroben@apple.com>

        Fix a dead link to the Windows Platform SDK and related instructions

        Rubberstamped by Alexey Proskuryakov.

        * building/tools.html: Fixed a dead link.

2008-07-21  Mark Rowe  <mrowe@apple.com>

        Update Akismet plugin to 2.1.6.

        * blog/wp-content/plugins/akismet/akismet.php:

2008-07-21  Mark Rowe  <mrowe@apple.com>

        Update to WordPress 2.6.

        * blog:

2008-07-18  David D. Kilzer  <ddkilzer@webkit.org>

        Fixed indentation of example code for C++ pointers/references!

        * coding/coding-style.html:

2008-07-18  Robert Blaut  <webkit@blaut.biz>

        Reviewed by David Kilzer.

        Fix for <https://bugs.webkit.org/show_bug.cgi?id=12313>
        Added code style guidelines for multi-line boolean expressions

        * coding/coding-style.html:

2008-07-02  Mark Rowe  <mrowe@apple.com>

        Update a URL that was out of date.

        * building/checkout.html:

2008-07-01  Mark Rowe  <mrowe@apple.com>

        Update the path to the configuration file.

        * blog/wp-config.php:

2008-06-27  Dan Bernstein  <mitz@apple.com>

        Reviewed by Timothy Hatcher.

        * css/main.css: Reduced text shadow offsets.

2008-06-25  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed, web site fix.

        Remove blank lines in an attempt to fix feeds.

        * blog/wp-content/themes/webkit/index.php:
        * blog/wp-content/themes/webkit/links.php:

2008-06-22  Aaron Digulla  <digulla@hepe.com>

        Reviewed by Darin Adler.

        Fix https://bugs.webkit.org/show_bug.cgi?id=18993
        Bug 18993: Update of buttons in editing toolbar demo lags behind

        * demos/editingToolbar/FancyToolbar.js:
        * demos/editingToolbar/index.html:

2008-06-16  Maciej Stachowiak  <mjs@apple.com>

        A handy reference image.

        * blog-files/acid3-timing.png: Added.

2008-06-10  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed.

        - tweak newly added markup.

        * blog/wp-content/themes/webkit/header.php:

2008-06-10  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Adele.

        - add short title and multisize icon

        * blog/wp-content/themes/webkit/header.php:
        * images/surfin-safari.icns: Added.

2008-06-04  Dean Jackson   <dino@apple.com>

        Put index pages into specs dirs to make it easier to
        find the documents.

        * specs/index.html: Added.
        * specs/CSSVisualEffects/index.html: Added.

2008-06-03  Maciej Stachowiak  <mjs@apple.com>

        Add a snapshot of the squirrelfish bytecode docs.

        * specs/squirrelfish-bytecode.html: Added.

2008-06-02  Geoffrey Garen  <ggaren@apple.com>

        Transparent background!

        * blog-files/squirrelfish.png:

2008-06-02  Geoffrey Garen  <ggaren@apple.com>

        Crop!

        * blog-files/squirrelfish-webkit-graph.png:

2008-06-02  Geoffrey Garen  <ggaren@apple.com>

        Renamed this file quiet down the peanut gallery.

        * blog-files/squirrelfish-webkit-graph.png: Copied from blog-files/webkit-graph.png.
        * blog-files/webkit-graph.png: Removed.

2008-06-02  Geoffrey Garen  <ggaren@apple.com>

        Added a graph.

        * blog-files/webkit-graph.png: Added.

2008-06-02  Geoffrey Garen  <ggaren@apple.com>

        Moved the squirrelfish mascot to the right place.

        * blog-files/squirrelfish.png: Copied from images/squirrelfish.png.
        * images/squirrelfish.png: Removed.

2008-06-02  Geoffrey Garen  <ggaren@apple.com>

        Uploaded the squirrelfish mascot.

        * images/squirrelfish.png: Added.

2008-05-23  William Siegrist  <wsiegrist@apple.com>

        Reviewed by Mark Rowe

        Rename duplicated "notice" id to "terms".

        * css/main.css:
        * nav.inc:

2008-05-16  Anders Carlsson  <andersca@apple.com>

        Reviewed by Jess.

        Add manifest MIME type.

        * .htaccess:

2008-05-14  Anders Carlsson  <andersca@apple.com>

        Reviewed by Mitz.

        Make our Sticky notes example an offline web app.

        * misc/DatabaseExample.html:
        * misc/DatabaseExample.manifest: Added.

2008-05-12  Maciej Stachowiak  <mjs@apple.com>

        Ooops, I made some mistakes trying to fix the validation errors. This time for sure.

        * demos/transitions-and-transforms/index.html:

2008-05-12  Maciej Stachowiak  <mjs@apple.com>

        Make the demo valid HTML5 (according to validator.nu) and add alt text to the images.

        * demos/transitions-and-transforms/index.html:

2008-05-12  Maciej Stachowiak  <mjs@apple.com>

        Tweaked demo visuals slightly.

        * demos/transitions-and-transforms/leopard.css:

2008-05-12  Maciej Stachowiak  <mjs@apple.com>

        Tweak CSS to look a little better while loading.

        * demos/transitions-and-transforms/leopard.css:

2008-05-12  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed - new demo.

        Added a demo of CSS Transforms and Transitions.

        * demos/transitions-and-transforms: Added.
        * demos/transitions-and-transforms/Finder Coverflow.png: Added.
        * demos/transitions-and-transforms/Horsehead.png: Added.
        * demos/transitions-and-transforms/Mail Stationery.png: Added.
        * demos/transitions-and-transforms/Quick Look.png: Added.
        * demos/transitions-and-transforms/Spaces.png: Added.
        * demos/transitions-and-transforms/Stacks.png: Added.
        * demos/transitions-and-transforms/Time Machine.png: Added.
        * demos/transitions-and-transforms/index.html: Added.
        * demos/transitions-and-transforms/leopard.css: Added.
        * demos/transitions-and-transforms/no-style.html: Added.

2008-05-08  Mark Rowe  <mrowe@apple.com>

        Reviewed by Sam Weinig.

        Add a link to the Mac OS Forge terms of use.

        * nav.inc:

2008-04-25  Mark Rowe  <mrowe@apple.com>

        Upgrade to WordPress 2.5.1.  Another day, another security vulnerability in WordPress.

        * blog:

2008-04-21  Dean Jackson  <dino@apple.com>

        Updated CSS Visual Effects proposals.

        CSS Animations

        * described simplified sandwich model (that animations have no effect
          outside their duration and last specified animation wins)
        * diagram showing the above
        * specified animations to start at style resolution or document load,
          whichever is later.
        * animation start events always have elapsedTime == 0

        CSS Transforms

        * removed text saying that elements cannot be drawn as intersecting.
        * described that preserve-3d trees often need a flattening parent, otherwise
          elements can be hidden behind their ancestor's background.
        * describe that preserve-3d is not always possible, such as when
          overflow is 'hidden'.

        CSS Transitions

        * no change

        * specs/CSSVisualEffects/CSSAnimation.html:
        * specs/CSSVisualEffects/CSSTransforms.html:
        * specs/CSSVisualEffects/CSSTransitions.html:
        * specs/CSSVisualEffects/sandwich.png: Added.

2008-04-08  Dean Jackson  <dino@apple.com>

        Add some updated proposals for CSS specifications, such as
        Transforms and Transitions which are already implemented in TOT.

        * specs/CSSVisualEffects: Added.
        * specs/CSSVisualEffects/CSSAnimation.html: Added.
        * specs/CSSVisualEffects/CSSTransforms.html: Added.
        * specs/CSSVisualEffects/CSSTransitions.html: Added.

2008-03-31  Mark Rowe  <mrowe@apple.com>

        Add some images that were missed in the WordPress 2.5 upgrade.

        * blog/:

2008-03-31  Mark Rowe  <mrowe@apple.com>

        Upgrade to WordPress 2.5

        * blog/:

2008-03-28  Darin Adler  <darin@apple.com>

        * building/build.html: Add another mention of using the Cygwin shell.
        * building/tools.html: Fix a typo on the name Cygwin.

2008-03-26  Maciej Stachowiak  <mjs@apple.com>

        More screenshots for the blog.

        * blog-files/acid3-full-rendering-pass.png: Added.
        * blog-files/acid3-rendering-reference.png: Added.

2008-03-26  Maciej Stachowiak  <mjs@apple.com>

        Screenshot for blog post.

        * blog-files/acid3-100.png: Added.

2008-03-23  Antti Koivisto  <antti@apple.com>

        * blog-files/wsj-vs.png: Added.

2008-03-23  Eric Seidel  <eric@webkit.org>

        Reviewed by Sam.

        Make our SVG status document slightly less inaccurate.

        * projects/svg/status.xml:

2008-03-21  Antti Koivisto  <antti@apple.com>

        Add some images for a blog post.

        * blog-files/wsj-nopreload.png: Added.
        * blog-files/wsj-preload.png: Added.

2008-03-17  Dan Bernstein  <mitz@apple.com>

        Reviewed by Sam Weinig.

        - link "backtrace" to the page that explains how to get one

        * quality/bugwriting.html:

2008-03-15  Matt Lilek  <webkit@mattlilek.com>

        Rubber-stamped by Mitz.

        Update crash log page with instructions for Leopard.

        * quality/crashlogs.html:

2008-03-11  Robert Blaut  <webkit@blaut.biz>

        Reviewed by Darin Adler.

        Fix bug http://bugs.webkit.org/show_bug.cgi?id=17280
        Patch deletes an obsolete hitlist.html page and other references to it

        * nav.inc: removed menu link to hitlist.html
        * projects/compat/hitlist.html: Removed.
        * projects/compat/index.html: removed reference to hitlist.html

2008-03-06  Timothy Hatcher  <timothy@apple.com>

        Rubber-stamped by Adam Roben.

        Add a simple page that has various demo functions for Drosera.

        * demos/drosera: Added.
        * demos/drosera/demo.js: Added.
        * demos/drosera/drosera.png: Added.
        * demos/drosera/index.html: Added.

2008-03-04  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Brady Eidson.

        * building/tools.html:  Update link to Windows Platform SDK to its new location.

2008-03-04  Mark Rowe  <mrowe@apple.com>

        Reviewed by Sam Weinig.

        Add a note about preferring if over else if when the previous if is terminated by a return statement.

        * coding/coding-style.html:

2008-02-08  Adam Roben  <aroben@apple.com>

        * perf/slickspeed/config.ini: Fixed version number.

2008-02-08  Adam Roben  <aroben@apple.com>

        Update jQuery to v1.2.3

        Rubberstamped by Mitz.

        * perf/slickspeed/config.ini:
        * perf/slickspeed/frameworks/jquery-1.2.3.js: Renamed from WebKitSite/perf/slickspeed/frameworks/jquery-1.2.1.js.

2008-02-07  David Smith  <catfish.man@gmail.com>

        Rubber stamped by weinig and bdash.
        Update prototype.js to 1.6.0.2 to be a bit less unfair in comparative benchmarking.

        * perf/slickspeed/frameworks/prototype.js:

2008-02-07  David Smith  <catfish.man@gmail.com>

        Rubber stamped by Mark Rowe
        Fix a duplicate selector in the test.

        * perf/slickspeed/selectors.list:

2008-02-07  David Smith  <catfish.man@gmail.com>

        Reviewed by Adam Roben.
        Added :nth-child and :last-child to the list of selectors to test.

        * perf/slickspeed/selectors.list:

2008-02-05  Mark Rowe  <mrowe@apple.com>

        Update WordPress to 2.3.3 which includes security fixes.

        * blog/wp-admin/install-helper.php:
        * blog/wp-includes/gettext.php:
        * blog/wp-includes/pluggable.php:
        * blog/wp-includes/version.php:
        * blog/xmlrpc.php:

2008-02-02  David Smith  <catfish.man@gmail.com>

        Reviewed by Oliver.

        Update the selector benchmark/test now that WebKit supports :only-child and :last-child;
        Unfortunately, the javascript libraries don't appear to implement :*-of-type correctly, so that one remains disabled for now.

        * perf/slickspeed/header.html: Typo fix, and updated the note to clarify that WebKit is no longer the only implementation causing us to leave some selectors disabled.
        * perf/slickspeed/selectors.list: Added the new selectors

2008-02-02  Mark Rowe  <mrowe@apple.com>

        Add WordPress plugin to give more control over blog comment settings.

        * blog/wp-content/plugins/commentcontrol.php: Added.

2008-01-30  Jessica Kahn  <jess@apple.com>

        Reviewed by Tim Hatcher.

        * coding/coding-style.html:
        Adding a note about avoiding explicit nil/NO initialization of Objective-C instance variables.

2008-01-21  David Smith  <catfish.man@gmail.com>

        Reviewed by Darin Adler.

        Added a modified version of the MooTools SlickSpeed Selector Test/Benchmark to show off querySelectorAll. MIT licensed.

        * perf/slickspeed: Added.
        * perf/slickspeed/config.ini: Added.
        * perf/slickspeed/footer.html: Added.
        * perf/slickspeed/frameworks: Added.
        * perf/slickspeed/frameworks/DomQuery.js: Added.
        * perf/slickspeed/frameworks/dummy.js: Added.
        * perf/slickspeed/frameworks/jquery-1.2.1.js: Added.
        * perf/slickspeed/frameworks/prototype.js: Added.
        * perf/slickspeed/header.html: Added.
        * perf/slickspeed/index.php: Added.
        * perf/slickspeed/instructions.txt: Added.
        * perf/slickspeed/logo.png: Added.
        * perf/slickspeed/selectors.list: Added.
        * perf/slickspeed/style.css: Added.
        * perf/slickspeed/system: Added.
        * perf/slickspeed/system/index.php: Added.
        * perf/slickspeed/system/slickspeed.js: Added.
        * perf/slickspeed/system/template.php: Added.
        * perf/slickspeed/template.html: Added.

2008-01-17  Steve Falkenburg  <sfalken@apple.com>

        Added Vista crash logging information.

        Reviewed by Adam.

        * quality/crashlogs.html:

2008-01-07  Eric Seidel  <eric@webkit.org>

        Reviewed by Mark Rowe.

        * projects/svg/status.xml: remove fixed bugs.

2007-12-30  Mark Rowe  <mrowe@apple.com>

        Unreviewed.  Update WordPress to 2.3.2, which includes security fixes.

        * blog/wp-admin/admin.php:
        * blog/wp-admin/includes/file.php:
        * blog/wp-admin/install.php:
        * blog/wp-admin/setup-config.php:
        * blog/wp-app.php:
        * blog/wp-includes/formatting.php:
        * blog/wp-includes/functions.php:
        * blog/wp-includes/pluggable.php:
        * blog/wp-includes/post.php:
        * blog/wp-includes/query.php:
        * blog/wp-includes/taxonomy.php:
        * blog/wp-includes/version.php:
        * blog/wp-includes/wp-db.php:
        * blog/wp-mail.php:
        * blog/wp-settings.php:
        * blog/xmlrpc.php:

2007-12-29  Alp Toker  <alp@atoker.com>

        Fix typo.

        * perf/sunspider-0.9/sunspider.html:

2007-12-29  Alp Toker  <alp@atoker.com>

        Reviewed by Maciej.

        Provide the current URL in the SunSpider results page. Useful for
        copying benchmark results out of browsers without a location bar or
        where the location bar can't handle long URLs.

        * perf/sunspider-0.9/sunspider-results.html:

2007-12-21  David Smith  <catfish.man@gmail.com>

        At bdash's suggestion, display a message if someone attempts to run the 'native' version of the getElementsByClassName benchmark in a browser that doesn't support that.

        * blog-files/gebcnspeedtest.html:

2007-12-21  David Smith  <catfish.man@gmail.com>

        Add the benchmark from the previous commit as well.

        * blog-files/gebcnspeedtest.html: Added.
        * blog-files/prototype-for-gebcn-test.js: Added.

2007-12-21  David Smith  <catfish.man@gmail.com>

        Add a graph of benchmark results for an upcoming blog post.

        * blog-files/gebcnwebkitonly.png: Added.

2007-12-18  Antti Koivisto  <antti@apple.com>

        Reviewed by Darin and Steve.

        Add instructions to install the QuickTime SDK for Windows.

        * building/tools.html:

2007-12-18  Mark Rowe  <mrowe@apple.com>

        Fix typo.

        * perf/sunspider-0.9/sunspider.html:

2007-12-18  Steve Falkenburg  <sfalken@apple.com>

        Correct link to Visual Studio Express 2005.
        Old link points to 2008.

        Reviewed by Mark.

        * building/tools.html:

2007-12-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.

        - work around IE layout bugs

        * perf/sunspider-0.9/sunspider.css:

2007-12-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Mark.

        - fix compare feature

        * perf/sunspider-0.9/sunspider-results.html:

2007-12-17  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Mark.

        - Add a copy of SunSpider 0.9 to the site

        * perf: Added.
        * perf/sunspider-0.9: Added.
        * perf/sunspider-0.9/3d-cube.html: Added.
        * perf/sunspider-0.9/3d-morph.html: Added.
        * perf/sunspider-0.9/3d-raytrace.html: Added.
        * perf/sunspider-0.9/access-binary-trees.html: Added.
        * perf/sunspider-0.9/access-fannkuch.html: Added.
        * perf/sunspider-0.9/access-nbody.html: Added.
        * perf/sunspider-0.9/access-nsieve.html: Added.
        * perf/sunspider-0.9/bitops-3bit-bits-in-byte.html: Added.
        * perf/sunspider-0.9/bitops-bits-in-byte.html: Added.
        * perf/sunspider-0.9/bitops-bitwise-and.html: Added.
        * perf/sunspider-0.9/bitops-nsieve-bits.html: Added.
        * perf/sunspider-0.9/controlflow-recursive.html: Added.
        * perf/sunspider-0.9/crypto-aes.html: Added.
        * perf/sunspider-0.9/crypto-md5.html: Added.
        * perf/sunspider-0.9/crypto-sha1.html: Added.
        * perf/sunspider-0.9/date-format-tofte.html: Added.
        * perf/sunspider-0.9/date-format-xparb.html: Added.
        * perf/sunspider-0.9/math-cordic.html: Added.
        * perf/sunspider-0.9/math-partial-sums.html: Added.
        * perf/sunspider-0.9/math-spectral-norm.html: Added.
        * perf/sunspider-0.9/regexp-dna.html: Added.
        * perf/sunspider-0.9/string-base64.html: Added.
        * perf/sunspider-0.9/string-fasta.html: Added.
        * perf/sunspider-0.9/string-tagcloud.html: Added.
        * perf/sunspider-0.9/string-unpack-code.html: Added.
        * perf/sunspider-0.9/string-validate-input.html: Added.
        * perf/sunspider-0.9/sunspider-analyze-results.js: Added.
        * perf/sunspider-0.9/sunspider-compare-results.js: Added.
        * perf/sunspider-0.9/sunspider-driver.html: Added.
        * perf/sunspider-0.9/sunspider-record-result.js: Added.
        * perf/sunspider-0.9/sunspider-results.html: Added.
        * perf/sunspider-0.9/sunspider-test-prefix.js: Added.
        * perf/sunspider-0.9/sunspider.css: Added.
        * perf/sunspider-0.9/sunspider.html: Added.

2007-12-16  Brent Fulgham  <bfulgham@gmail.com>

        Reviewed by Maciej Stachowiak.

        http://bugs.webkit.org/show_bug.cgi?id=16446.

        * building/debug.html:  Update to expand the win32 debugging instructions.

2007-12-07  Brady Eidson  <beidson@apple.com>

        Reviewed by Darin's rubberstamp

        When developing the Database feature and dealing with UI Delegate issues, it is important to have
        live examples on the web to help reproduce certain situations.

        This file is a dumping ground for such examples, and starts out with one function - the ability to add
        arbitrary amounts of data to a database to test the quota-related mechanisms of the UI

        * misc/DatabaseTester.html: Added.

2007-12-07  Brady Eidson  <beidson@apple.com>

        Reviewed by Adam Roben

        * misc/DatabaseExample.html: Changed to differentiate failure between running with an
          unsupported browser or some other error that prevented the database from opening.
          In the future we can use ExceptionCodes returned from openDatabase(), but a good list
          of those don't exist yet

2007-12-05  Timothy Hatcher  <timothy@apple.com>

        Add another Inspector screenshot for an upcoming blog post.

        * blog-files/InspectorDatabaseBrowser.png: Added.

2007-12-04  Alp Toker  <alp@atoker.com>

        Reviewed by Mark Rowe.

        Link to Planet WebKit.

        * nav.inc:

2007-12-02  Adam Roben  <aroben@apple.com>

        Add another screenshot

        * blog-files/InspectElementMenu.png: Added.

2007-12-02  Adam Roben  <aroben@apple.com>

        Add some Inspector screenshots for an upcoming blog post

        Rubberstamped by Mark Rowe.

        * blog-files/InspectorCSSEditing.png: Added.
        * blog-files/InspectorFonts.png: Added.

2007-11-30  Matt Lilek  <webkit@mattlilek.com>

        Reviewed by Adam.

        Link to the commit and review policy.

        * coding/contributing.html:
        * nav.inc:

2007-11-30  Darin Adler  <darin@apple.com>

        * coding/commit-review-policy.html: A couple more typos and very
        minor grammatical stuff. No substantive change.

2007-11-30  Darin Adler  <darin@apple.com>

        * coding/commit-review-policy.html: Fixed a typo, added a footer.

2007-11-30  Matt Lilek  <webkit@mattlilek.com>

        Reviewed by Maciej.

        Clean up a couple of typos from Maciej's last patch.

        * coding/commit-review-policy.html:

2007-11-30  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Bertrand.

        New commit and review policy.

        * coding/commit-review-policy.html: Added.

2007-11-21  Mark Rowe  <mrowe@apple.com>

        Reviewed by Eric.

        Update coding style to cover control statements with no body.

        * coding/coding-style.html:

2007-11-17  Adam Roben  <aroben@apple.com>

        Update Windows debugging instructions

        Reviewed by Mark Rowe.

        * building/debug.html:

2007-11-14  Brady Eidson  <beidson@apple.com>

        For future use

        * images/DroseraPic.png: Added.

2007-11-12  Brady Eidson  <beidson@apple.com>

        Reviewed by Tim

        Update the DatabaseExample to use the new API

        * misc/DatabaseExample.html:

2007-11-12  Mark Rowe  <mrowe@apple.com>

        * building/tools.html: Remove extra >.

2007-11-09  Antti Koivisto  <antti@apple.com>

        Rubber stamped by bdash.

        Add directory for blog resources (and one image).

        * blog-files: Added.
        * blog-files/touch-poster.png: Added.

2007-11-07  Dan Bernstein  <mitz@apple.com>

        Reviewed by Darin Adler.

        - removed a workaround for the bug fixed in the WebCore part of this
          patch

2007-11-04  Timothy Hatcher  <timothy@apple.com>

        Land the HTML Editing Toolbar demo from WWDC 2007.

        * demos: Added.
        * demos/editingToolbar: Added.
        * demos/editingToolbar/FancyToolbar.css: Added.
        * demos/editingToolbar/FancyToolbar.js: Added.
        * demos/editingToolbar/FancyToolbarImages: Added.
        * demos/editingToolbar/FancyToolbarImages/button.png: Added.
        * demos/editingToolbar/FancyToolbarImages/buttonLeft.png: Added.
        * demos/editingToolbar/FancyToolbarImages/buttonMiddle.png: Added.
        * demos/editingToolbar/FancyToolbarImages/buttonPressed.png: Added.
        * demos/editingToolbar/FancyToolbarImages/buttonPressedLeft.png: Added.
        * demos/editingToolbar/FancyToolbarImages/buttonPressedMiddle.png: Added.
        * demos/editingToolbar/FancyToolbarImages/buttonPressedRight.png: Added.
        * demos/editingToolbar/FancyToolbarImages/buttonRight.png: Added.
        * demos/editingToolbar/FancyToolbarImages/camera.png: Added.
        * demos/editingToolbar/FancyToolbarImages/link.png: Added.
        * demos/editingToolbar/FancyToolbarImages/textAlign.png: Added.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutline.png: Added.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineBottom.png: Added.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineBottomLeft.png: Added.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineBottomRight.png: Added.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineLeft.png: Added.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineRight.png: Added.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineTop.png: Added.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineTopLeft.png: Added.
        * demos/editingToolbar/FancyToolbarImages/toolbarOutlineTopRight.png: Added.
        * demos/editingToolbar/content.html: Added.
        * demos/editingToolbar/images: Added.
        * demos/editingToolbar/images/safari.png: Added.
        * demos/editingToolbar/index.html: Added.

2007-11-04  David D. Kilzer  <ddkilzer@webkit.org>

        CIA has changed its hostname from cia.navi.cx to cia.vc
        <http://bugs.webkit.org/show_bug.cgi?id=15829>

        Reviewed by Mitz.

        * contact.html: Updated links to CIA.

2007-11-03  David D. Kilzer  <ddkilzer@webkit.org>

        LGPL'ed files contain incorrect FSF address
        <http://bugs.webkit.org/show_bug.cgi?id=14885>

        Reviewed by NOBODY (follow-up fix).

        * blog/wp-includes/class-snoopy.php:
        * blog/wp-includes/gettext.php:
        * blog/wp-includes/streams.php:

2007-11-01  Sam Weinig  <sam@webkit.org>

        Rubber-stamped by Tim Hatcher.

        * misc/DatabaseExample.html: Speed up default close speed to .25s

2007-11-01  Sam Weinig  <sam@webkit.org>

        Reviewed by Adam Roben.

        - Don't show the close button on the notes unless hovering over the note.
        - Do transformation and fade when closing a note using the new transition properties.

        * misc/DatabaseExample.html:

2007-10-29  Mark Rowe  <mrowe@apple.com>

        Upgrade WordPress.

        * blog: Updated.

2007-10-29  Mark Rowe  <mrowe@apple.com>

        Files that have been added or modified on the web server without making it in to SVN.

        * .htaccess:
        * blog/wp-content/databaseexample.png: Added.
        * blog/wp-content/uploads: Added.
        * blog/wp-content/uploads/2007: Added.
        * blog/wp-content/uploads/2007/06: Added.
        * blog/wp-content/uploads/2007/06/newinspector.png: Added.
        * building/cygwin-downloader.zip: Added.

2007-10-25  Alexey Proskuryakov  <ap@webkit.org>

        Rubber-stamped by Mark Rowe.

        * images/download.png: Updated to say "Nightly builds" instead of
       "Nightly (6 MB)" - the Mac version is ~15 MB now, and this isn't a direct
       download link anyway.

2007-10-21  David Kilzer  <ddkilzer@webkit.org>

        Reviewed by Darin Adler.

        - fix http://bugs.webkit.org/show_bug.cgi?id=15592
          DOM Exception opening up client-side database example for the first time

        There was a race condition when creating the WebKitStickyNotes table for the
        first time in which the loaded() function (renamed to loadNotes()) could be
        called before the table was created.  Prevent this by only calling loadNotes()
        in an executeSql() callback after we know the table exists, or after we know
        the table has been created.

        * misc/DatabaseExample.html: Renamed loaded() function to loadNotes().
        Created a new loaded() function.

2007-10-20  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Adam.

        Convert TIFFs to PNGs so that the demo page is fully-functional in the Gtk port.

        * misc/DatabaseExample.html:
        * misc/deleteButton.png: Added.
        * misc/deleteButton.tiff: Removed.
        * misc/deleteButtonPressed.png: Added.
        * misc/deleteButtonPressed.tiff: Removed.

2007-10-20  Adam Roben  <aroben@apple.com>

        Make the notes sticky!

        Reviewed by Mark.

        * misc/DatabaseExample.html:
        * misc/deleteButton.tiff: Added.
        * misc/deleteButtonPressed.tiff: Added.

2007-10-19  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Mark Rowe.

        Fix a couple of exceptions for first time users.

        * misc/DatabaseExample.html:

2007-10-19  Anders Carlsson  <andersca@apple.com>

        Reviewed by Brady.

        Make example actually work.

        * misc/DatabaseExample.html:

2007-10-19  Anders Carlsson  <andersca@apple.com>

        Reviewed by Adam.

        Update example.

        * misc/DatabaseExample.html:

2007-10-19  Brady Eidson  <beidson@apple.com>

        Reviewed by Tim

        Tiger's SQLite doesn't support CREATE TABLE IF NOT EXISTS :(

        * misc/DatabaseExample.html:

2007-10-19  Brady Eidson  <beidson@apple.com>

        Reviewed by Tim Hatcher

        Sample database API usage

        * misc/DatabaseExample.html: Added.

2007-09-25  David Kilzer  <ddkilzer@webkit.org>

        Reviewed by Adam.

        - Fix http://bugs.webkit.org/show_bug.cgi?id=14885
          LGPL'ed files contain incorrect FSF address

        * blog/wp-content/plugins/wp-cache/wp-cache.php:
        * blog/wp-includes/class-snoopy.php:
        * blog/wp-includes/gettext.php:
        * blog/wp-includes/js/tinymce/license.html:
        * blog/wp-includes/streams.php:

2007-09-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Mark Rowe.

        - Limit custom list bullets to ordered lists only

        * css/blue.css:
        * css/gray.css:
        * css/green.css:
        * css/ie.css:
        * css/main.css:
        * css/pink.css:
        * css/purple.css:
        * css/yellow.css:

2007-09-22  Jan Michael Alonzo  <jmalonzo@unpluggable.com>

        Reviewed by Adam.

        * coding/coding-style.html:
          - in section Other Punctuation
            - syntax instead of synatax
            - fix sample code alignment

2007-09-06  Maciej Stachowiak  <mjs@apple.com>

        Forgot the JS file.

        * misc/WebKitDetect.js: Added.

2007-09-06  Maciej Stachowiak  <mjs@apple.com>

        Not reviewed - copy of WebKitDetect script from wiki

        * misc/WebKitDetect.html: Added.

2007-08-20  Adam Roben  <aroben@apple.com>

        Remove any mention of drwtsn32.log, as it is almost never useful for tracking down crashes

        Reviewed by Oliver.

        * quality/crashlogs.html:

2007-07-26  Maciej Stachowiak  <mjs@apple.com>

        - grammar fix pointed out by Mitz.

        * projects/goals.html:

2007-07-25  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Adam.

        Added WebKit Project Goals.

        * nav.inc: added a nav link.
        * projects/goals.html: Added.

2007-07-22  Matt Lilek  <pewtermoose@gmail.com>

        Reviewed by Adam Roben.

        Add information on getting a useful crash log on Mac and Windows.

        * nav.inc:
        * quality/crashlogs.html: Added.
        * quality/mac_reportbox.jpg: Added.
        * quality/mac_viewtrace.jpg: Added.
        * quality/win_installwatson.jpg: Added.
        * quality/win_watsongui.jpg: Added.
        * quality/win_watsoninstalled.jpg: Added.

2007-07-20  Mark Rowe  <mrowe@apple.com>

        Replace symlink with a PHP-level include to allow use of git on Windows without cygwin.
        WordPress will replace the file with a symlink when it's first accessed, and the PHP-level
        include is functionally identical for our purposes on the first use.

        * blog/wp-content/advanced-cache.php:

2007-07-16  Charles Gaudette  <charles@gaudette-net.com>

        Reviewed by Niko.

        - http://bugs.webkit.org/show_bug.cgi?id=14628
          broken link on webkit.org home page - "KHTML" points to http://khtml.info/

        * index.html:

2007-07-06  Matt Lilek  <pewtermoose@gmail.com>

        Reviewed by Adam Roben.

        Add info about VC++ Express forgetting SDK paths.

        * building/build.html:

2007-07-02  Mitz Pettel  <mitz@webkit.org>

        Reviewed by Darin Adler.

        - http://bugs.webkit.org/show_bug.cgi?id=14482
          Add information about the NeedsReduction and HasReduction keywords to quality/reduction.html

        * quality/reduction.html:

2007-07-01  Mitz Pettel  <mitz@webkit.org>

        Reviewed by Darin Adler.

        - http://bugs.webkit.org/show_bug.cgi?id=14481
        Broken links on coding/lgpl-license.html

        * coding/lgpl-license.html:

2007-06-24  Mitz Pettel  <mitz@webkit.org>

        Reviewed by Adam Roben.

        Fix broken link.

        * building/build.html:

2007-06-23  Mark Rowe  <mrowe@apple.com>

        Not reviewed.

        * building/checkout.html: Update link to bypass caching proxy as it has a habit of breaking huge downloads.

2007-06-12  Adam Roben  <aroben@apple.com>

        Update the location of cygwin-downloader.zip.

        Rubberstamped by Hyatt.

        * building/tools.html:

2007-06-12  Dave Hyatt  <hyatt@apple.com>

        Add Windows checkout/build instructions to the website.

        * building/build.html:
        * building/checkout.html:
        * building/debug.html:
        * building/tools.html: Added.
        * building/run.html:
        * css/main.css:
        * index.html:
        * nav.inc:

2007-06-10  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Beth Dakin.

        Cleaned up formatting on the check out page.

        * building/checkout.html:

2007-06-08  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Hyatt.

        Switch to using Internet Explorer's conditional comments to target IE-specific styles rather
        than doing server-side user agent checks.  This resolves an issue some people were seeing where
        caching would lead to a page generated for an Internet Explorer user being served to a Safari
        user.  The visible symptom of this was many of the graphics were missing.

        * blog/wp-content/themes/webkit/header.php:
        * header.inc:

2007-05-04  Mark Rowe  <mrowe@apple.com>

        Upgrade to WordPress 2.2.  I didn't go to the effort of tracking down files
        present in the old version which have since been removed, but it's unlikely
        they'll ever cause a problem.

2007-05-04  Mark Rowe  <mrowe@apple.com>

        Add graphics used by existing blog posts into SVN.

        * blog/wp-content/rotate.png: Added.
        * blog/wp-content/drosera.png: Added.
        * blog/wp-content/hitlist.png: Added.
        * blog/wp-content/svgtextmini.png: Added.
        * blog/wp-content/svgtextmini_01.png: Added.
        * blog/wp-content/textfield_screenshot.jpg: Added.
        * blog/wp-content/Picture9.png: Added.
        * blog/wp-content/svgtext.png: Added.
        * blog/wp-content/webInspector.png: Added.
        * blog/wp-content/rotate.svg: Added.
        * blog/wp-content/chucknorris.png: Added.

2007-04-21  Mitz Pettel  <mitz@webkit.org>

        Reviewed by Darin Adler.

        - http://bugs.webkit.org/show_bug.cgi?id=13350
          Build Ahem into DumpRenderTree

        * quality/testing.html: Removed the requirement to download and install
        Ahem for running the tests.
        * quality/testwriting.html: Added information about Ahem.

2007-04-09  Adele Peterson  <adele@apple.com>

        * blog/wp-content/chrome.jpg: Added.

2007-04-05  Mark Malone  <markmalone@mac.com>

        Reviewed by Darin Adler.

        http://bugs.webkit.org/show_bug.cgi?id=13273
        Bug 13273: DOM Interfaces Nav link should go somewhere more useful

        * nav.inc: Link directly to the hierarchy.

2007-03-26  Darin Adler  <darin@apple.com>

        * coding/coding-style.html: Let's misquote George Orwell: "Wrong is right. Right is wrong."

2007-03-25  Darin Adler  <darin@apple.com>

        * coding/coding-style.html: Put !important on right/wrong colors so they override the
        green color that comes from the green.css stylesheet.

2007-03-25  Darin Adler  <darin@apple.com>

        * coding/RefPtr.html: A couple minor wording tweaks.

2007-03-25  Darin Adler  <darin@apple.com>

        * coding/RefPtr.html: Put the operator name "new" in the oblique style as with other identifiers.

2007-03-25  Mark Rowe  <mrowe@apple.com>

        * coding/RefPtr.html: Fix grammar error that Mitz pointed out.
        Replace raw ampersands in hyperlink URL with named entity.

2007-03-25  Darin Adler  <darin@apple.com>

        * coding/RefPtr.html: A couple wording tweaks.

2007-03-25  Darin Adler  <darin@apple.com>

        * coding/RefPtr.html: More formatting tweaks. Added a possible new topic for the document,
        suggested by Anders.

2007-03-24  Darin Adler  <darin@apple.com>

        * css/main.css: Try tighter spacing for code examples.

2007-03-24  Darin Adler  <darin@apple.com>

        * coding/RefPtr.html: <span> -> </span>

2007-03-24  Darin Adler  <darin@apple.com>

        * coding/RefPtr.html: "smart pointer" -> "smart pointers"

2007-03-24  Darin Adler  <darin@apple.com>

        * coding/RefPtr.html: Added. First draft of a document about RefPtr.

        Also tweaked the MIME types of a few files and removed a stray executable bit.

2007-03-21  David Kilzer  <ddkilzer@apple.com>

        * building/checkout.html: By popular demand, the link to the svn 1.3 client has been removed.

2007-03-21  David Kilzer  <ddkilzer@apple.com>

        * building/checkout.html: Got rid of "click here" link and restructured sentences
        linking to svn clients.

2007-03-21  David Kilzer  <ddkilzer@apple.com>

        Reviewed by Adam.

        * building/checkout.html: Add link to svn 1.4 client for Mac OS X 10.4.

2007-03-21  Maciej Stachowiak  <mjs@apple.com>

        - some specs to propose by email

        * specs/HTML_Timed_Media_Elements.html: Added.
        * specs/Timed_Media_CSS.html: Added.
        * specs/Timed_Media_Elements-Open_Issues.html: Added.
        * specs/mediaelement.css: Added.
        * specs/movie-status-states.png: Added.

2007-03-20  Matt Lilek  <pewtermoose@gmail.com>

        Reviewed by Darin Adler.

        Clear up the steps necessary to get a patch landed.

        http://bugs.webkit.org/show_bug.cgi?id=12877 - Bug 12877: "Contributing Code" page could be clearer
        http://bugs.webkit.org/show_bug.cgi?id=8690 - Bug 8690: Contributing code doesn't mention what to do with new files

        * coding/contributing.html:

2007-03-18  Maciej Stachowiak  <mjs@apple.com>

        Added a random JS benchmark.

        * misc/morph.html: Added.

2007-03-14  Kevin McCullough  <kmccullough@apple.com>

        Reviewed by .

        Silly wrapping change for testing a post-commit hook change.

        * contact.html:

2007-03-09  Darin Adler  <darin@apple.com>

        * blog/wp-content/themes/webkit/style.css: Removed rule for code since
        we want it to match pre, and the default font looks fine -- no need to
        ask for "Courier New" explicitly.

2007-03-09  Mark Rowe  <mrowe@apple.com>

        Rubber-stamped by Tim Hatcher.

        Sexy blog permalinks!

        * blog/.htaccess: Added.

2007-03-09  Mark Rowe  <mrowe@apple.com>

        Reviewed by Adam.

        * building/checkout.html: Update repository URL.

2007-03-07  Brady Eidson  <beidson@apple.com>

        Whoops, its actually prepare-ChangeLog

        * coding/contributing.html:

2007-03-07  Brady Eidson  <beidson@apple.com>

        Reviewed by Anders.

        Explicitly mention the prepare-Changelog step for contributing patches

        * coding/contributing.html:

2007-02-25  Anders Carlsson  <acarlsson@apple.com>

        Reviewed by Maciej.

        * building/checkout.html:
        Add Trac link to our SVN repository,

2007-02-15  Darin Adler  <darin@apple.com>

        * projects/performance/index.html: Fix i-Bench link.

2007-02-08  Mark Rowe  <mrowe@apple.com>

        Reviewed by Tim Hatcher.

        * nav.inc: Add link to very work-in-progress DOM documentation.

2007-01-19  Nicholas Shanks  <contact@nickshanks.com>

        Reviewed by Maciej.

        Change doctype for webkit.org/blog/ admin interface to HTML 4.01.

        * blog/wp-admin/admin-header.php:
        * blog/wp-login.php:

2007-01-15  Brady Eidson  <beidson@apple.com>

        Reviewed by Maciej

        * coding/coding-style.html: Added switch/case indentation rules

2007-01-15  Eric Seidel  <eric@webkit.org>

        Reviewed by bdash.

        * coding/coding-style.html: update to include style for header guards

2007-01-10  Geoffrey Garen  <ggaren@apple.com>

        * coding/coding-style.html: Fixed minor validation error.

2007-01-10  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Beth Dakin.

        Updated coding style guidelines to cover a lot of stuff previously absent.

        * coding/coding-style.html:

2007-01-04  Lars Naesbye Christensen  <larsnaesbye@stud.ku.dk>

        Reviewed by Darin Adler.

        http://bugs.webkit.org/show_bug.cgi?id=11295
        Nightly download size is misleading

        * images/download.png: Changed the size to 6 MB.

2007-01-01  Darin Adler  <darin@apple.com>

        * quality/bugzilla.html: Fix a lingering reference to opendarwin.org.

2006-12-06  Rob Buis  <buis@kde.org>

        Reviewed by Brady.

        http://bugs.webkit.org/show_bug.cgi?id=10254
        A few grammar and spelling corrections on the WebKit website

        Grammar and spelling corrections by Jonathan Johnsson.

        * coding/coding-style.html:
        * projects/css/index.html:
        * projects/javascript/index.html:
        * projects/svg/index.html:
        * quality/reduction.html:

2006-11-21  Matt Lilek  <pewtermoose@gmail.com>

        Reviewed by Maciej.

        http://bugs.webkit.org/show_bug.cgi?id=11652
        Bug 11652: Mailing list address and URL are incorrect

        This also removes a lot of bit rot from the KWQ-era.

        * coding/contributing.html:
        * contact.html:
        * projects/css/index.html:
        * projects/editing/index.html:
        * projects/forms/index.html:
        * projects/html/index.html:
        * projects/portability/index.html:
        * projects/xslt/index.html:
        * quality/lifecycle.html:
        * quality/testwriting.html:

2006-11-18  Mitz Pettel  <mitz@webkit.org>

        Reviewed by Maciej.

        Gender-neutrality fix.

        * coding/contributing.html:

2006-11-14  Matt Lilek  <pewtermoose@gmail.com>

        Reviewed by Tim Hatcher.

        Moved the web developer page to the wiki, adding link to the Drosera page.

        * .htaccess: Add permanent redirect to the new page on the wiki.
        * contact.html: Trac numbers are no longer one off.
        * nav.inc:
        * webdevelopers/index.html: Removed.
        * webdevelopers/webkit_version.html: Removed.
        * webdevelopers/webkit_version.js: Removed.
        * webdevelopers/webkit_version_xl.html: Removed.
        * webdevelopers/webkit_version_xl.js: Removed.

2006-11-14  Mark Rowe  <bdash@webkit.org>

        Reviewed by Tim Hatcher.

        http://bugs.webkit.org/show_bug.cgi?id=9529
        Bug 9529: Navigation HTML duplicated on webkit.org web site

        * blog/wp-content/themes/webkit/sidebar.php: Include navigation from nav.inc rather than duplicating it here.
        * nav.inc: Generate WordPress archive list if included from within WordPress.

2006-11-07  Mark Rowe  <bdash@webkit.org>

        Reviewed by Dave Hyatt.

        * projects/javascript/index.html: Update link to non-existent JavaScript Bugzilla
        component to the correct JavaScriptCore.

2006-11-06  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Anders.

        Update the site with new wiki and Trac links.

        * blog/wp-content/themes/webkit/sidebar.php:
        * building/build.html:
        * index.html:
        * nav.inc:
        * projects/svg/index.html:

2006-10-31  Mark Rowe  <bdash@webkit.org>

        Reviewed by Mitz.

        Update WebKit blog link to prevent pointless redirects.

        * nav.inc:

2006-10-25  Mitz Pettel  <mitz@webkit.org>

        Reviewed by Adele.

        - http://bugs.webkit.org/show_bug.cgi?id=11412
          Stray list item in coding/coding-style.html

        * coding/coding-style.html:

2006-10-25  Mark Rowe  <bdash@webkit.org>

        Reviewed by Maciej.

        Fix some HTML bugs in the coding style guidelines.

        * coding/coding-style.html:

2006-10-13  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Beth.

        Split build, run, and debug steps into separate pages. Darin recommended
        this a while back.

        * building/build.html:
        * building/checkout.html:
        * building/debug.html: Added.
        * building/run.html: Added.
        * nav.inc:

2006-10-05  Eric Seidel  <eric@webkit.org>

        Reviewed by Tim H.

        * coding/coding-style.html: use css styles, add example for whitespace, add example for c++ constructors

2006-09-26  Eric Seidel  <eric@webkit.org>

        Reviewed by anders.

        * projects/svg/status.xml: update status to reflect current state of SVG development

2006-09-21  Matt Lilek  <pewtermoose@gmail.com>

        Reviewed by Eric.

        http://bugs.webkit.org/show_bug.cgi?id=10975
        Update the blog template to valid HTML 4.01 Strict.

        * blog/wp-content/themes/webkit/comments-popup.php:
        * blog/wp-content/themes/webkit/comments.php:
        * blog/wp-content/themes/webkit/footer.php:
        * blog/wp-content/themes/webkit/header.php:
        * blog/wp-content/themes/webkit/style.css: Add missing semi-colon that the validator complained about.

2006-09-21  Mark Rowe  <opendarwin.org@bdash.net.nz>

        Reviewed by Eric.

        http://bugs.webkit.org/show_bug.cgi?id=10966
        Bug 10966: Updates to website

        Resolves a few remaining validation issues, makes Bugzilla links consistent, and removes unneeded references to OpenDarwin.

        * coding/coding-style.html:
        * coding/lgpl-license.html:
        * contact.html:
        * index.html:
        * projects/css/index.html:
        * projects/editing/index.html:
        * projects/forms/index.html:
        * projects/html/index.html:
        * projects/index.html:
        * projects/javascript/index.html:
        * projects/svg/index.html:
        * projects/xslt/index.html:
        * webdevelopers/webkit_version.html:
        * webdevelopers/webkit_version_xl.html:

2006-09-21  Mark Rowe  <opendarwin.org@bdash.net.nz>

        Reviewed by TimH.

        Updates to make static pages validate as HTML 4.01 Strict.

        * building/build.html:
        * coding/coding-style.html:
        * header.inc:
        * index.html: Move <style> tag into the document head.
        * projects/cleanup/index.html:
        * projects/compat/index.html:
        * projects/css/index.html:
        * projects/documentation/index.html:
        * projects/editing/index.html:
        * projects/forms/index.html: Remove note about <label> not being implemented correctly.
        * projects/html/index.html:
        * projects/javascript/index.html:
        * projects/performance/index.html:
        * projects/portability/index.html: Change mention of Windows port to note that it is in progress rather than non-existant.
        * projects/printing/index.html:
        * projects/svg/index.html:
        * projects/xslt/index.html:
        * quality/bugwriting.html: Update WebKit version numbers to be accurate.  Move JS away from using innerHTML as W3C validator doesn't like it.
        * quality/reduction.html:
        * quality/reporting.html: Rename element IDs that start with numbers.  Update WebKit and Mac OS X version numbers to be accurate.
        * quality/testing.html:

2006-09-19  Brady Eidson  <beidson@apple.com>

        http://bugs.webkit.org/show_bug.cgi?id=8220
        Add the favicon.ico to the site.
        Notice, users of shipping Safari won't see the updated favicon
        unless they clear their icon cache - ToT users can manually reload
        the site and force the refresh  ;)

        * favicon.ico: Added.

2006-09-08  Kevin McCullough  <KMcCullough@apple.com>

        Reviewed by Adel.

        - this patch brought to you by the letter 'c'

        * coding/coding-style.html:

2006-08-24  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin Adler.

        - http://bugs.webkit.org/show_bug.cgi?id=10444
          Navigation links overlap the Spam Karma 2 footer

        * blog/wp-content/themes/webkit/style.css: Hide the footer altogether.

2006-08-21  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Darin Adler.

        Bug 9302: WebKit nightly download image says ~2.5 MB when
        universal binaries make it ~5.0 MB
        http://bugs.webkit.org/show_bug.cgi?id=9302

        * images/download.png:

2006-08-21  Timothy Hatcher  <timothy@apple.com>

        Stamped by Maciej.

        Changes many opendarwin.org links to the proper webkit.org version.

        * blog/wp-content/themes/webkit/sidebar.php:
        * blog/wp-content/themes/webkit/style.css:
        * building/build.html:
        * coding/contributing.html:
        * contact.html:
        * index.html:
        * nav.inc:
        * projects/compat/hitlist.html:
        * projects/css/index.html:
        * projects/editing/index.html:
        * projects/forms/index.html:
        * projects/html/index.html:
        * projects/javascript/index.html:
        * projects/svg/index.html:
        * projects/svg/svg-status.xsl:
        * projects/xslt/index.html:
        * quality/bugpriorities.html:
        * quality/bugzilla.html:
        * quality/leakhunting.html:
        * quality/lifecycle.html:
        * quality/reporting.html:

2006-08-15  Eric Seidel  <eric@webkit.org>

        Reviewed by TimH.

        * projects/svg/status.xml: updated to reflect current SVG status

2006-08-02  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by TimO.

        Tweaked the build instructions a bit.

        * building/build.html:
        * building/debug.png: Added.

2006-08-02  Darin Adler  <darin@apple.com>

        * building/checkout.html: Fix a typo: "OpenSource" instead of "Open Source".

2006-08-01  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Beth.

        - Added instructions for debugging in Xcode

        * building/build-window.png: Added.
        * building/build.html:
        * building/custom-executable.png: Added.
        * building/info-tab.png: Added.

2006-07-30  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Beth.

        - Tweaked the checkout and build instructions to make them simpler and
        clearer.

        * building/build.html:
        * building/checkout.html:

2006-06-22  Alexey Proskuryakov  <ap@nypop.com>

        Reviewed by Darin Adler.

        - see http://bugs.webkit.org/show_bug.cgi?id=9539
        Another case error preventing build

        * building/build.html: Building WebKit now requires Xcode 2.3.

2006-06-21  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed and landed by Anders.

        * blog/wp-content/themes/webkit/sidebar.php:
         Add link to Wiki in the navigation menu here too.

2006-06-21  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed and landed by Anders.

        * nav.inc: Add link to Wiki in the navigation menu.

2006-06-15  Joost de Valk  <jdevalk@opendarwin.org>

        Patch by David Kilzer, reviewed by Geoffrey Garen, landed by Joost de Valk.

        Fix http://bugs.webkit.org/show_bug.cgi?id=9407

        Improve wording of first paragraph of webkit site.

        * index.html:

2006-06-08  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Darin Adler.

        Include our own copies of the BSD and LGPL licenses.

        * coding/bsd-license.html: Added.
        * coding/lgpl-license.html: Added.
        * nav.inc: link to our copies of the licenses

2006-06-04  David Kilzer  <ddkilzer@kilzer.net>

        Reviewed by ggaren.

        http://bugs.webkit.org/show_bug.cgi?id=9303
        JavaScript error when loading WebKit blog page

        * blog/wp-content/themes/webkit/sidebar.php: Removed unused JavaScript.  Synced with nav.inc.
        * nav.inc: Removed evil tabs--whitespace change only.

2006-05-24  Bradley Morrison  <bradley.morrison@nokia.com>

        Reviewed by John Sullivan.

        * quality/lifecycle.html: mentions case of PlatformOnly bugs
                                  and 'other' bug databases.

2006-05-25  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Timothy Hatcher.

        Adding Google Analytics tracking code, to create stats of our webpages.

        * blog/wp-content/themes/webkit/footer.php:
        * footer.inc:

2006-05-23  Bradley Morrison  <bradley.morrison@nokia.com>

        Reviewed by Timothy.

        * index.html: Link to Nokia's S60 WebKit.

2006-05-08  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Anders.

        * building/checkout.html: changed link to point to universal binary. Thanks to Duncan Wilcox for hinting this one.

2006-04-28  Eric Seidel  <eseidel@apple.com>

        Reviewed by andersca.

        * projects/svg/status.xml: Update to reflect current status.

2006-04-18  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Eric Seidel .

        Added WebKit detection scripts and a small howto + a new section to our
        website: Web Developers.

        * nav.inc:
        * webdevelopers: Added.
        * webdevelopers/index.html: Added.
        * webdevelopers/webkit_version.html: Added.
        * webdevelopers/webkit_version.js: Added.
        * webdevelopers/webkit_version_xl.html: Added.
        * webdevelopers/webkit_version_xl.js: Added.

2006-04-17  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by ggaren.

        * blog/wp-config.php: passwords and users don't belong in SVN.

2006-04-16  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Maciej.

        * quality/lifecycle.html: small textual change to my contact info;
        * quality/reporting.html: added non-ADC bug report URL.

2006-04-16  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Maciej.

        * contact.html: added URL's for trac, CIA, webkit-unassigned and build bot. These probably need to be on other places to but we will do that later on.

2006-04-13  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Maciej.

        * projects/compat/hitlist.html: Added Google Calendar to the list
        in place of www.hangseng.com/ebanking

2006-04-11  Eric Seidel  <eseidel@apple.com>

        Reviewed by andersca.

        * quality/testing.html: fix run-mozilla-tests to run-javascriptcore-tests

2006-04-10  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Beth.

        * projects/compat/hitlist.html: updated dates

2006-03-23  David Kilzer  <ddkilzer@kilzer.ent>

        Reviewed by Darin Adler.

        - Fix http://bugs.webkit.org/show_bug.cgi?id=7918
        Coding style doc uses illegal entity

        * coding/coding-style.html: Changed &emdash; to &mdash;.

2006-03-15  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by TimH.

        * projects/compat/hitlist.html: Moved delta.com to the alumni list,
        added description of alumni list.

2006-03-08  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Beth.

        Clarified that sites on the list aren't necessarily "broken."

        * projects/compat/hitlist.html:

2006-03-08  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Beth.

        Updated links to gap and bananarepublic bugs.

        * projects/compat/hitlist.html:

2006-03-06  Mitz Pettel  <opendarwin.org@mitzpettel.com>

        Reviewed by Darin Adler.

        Change "Mail.app" to "Mail".

        * index.html:
        * projects/editing/index.html:

2006-03-06  Geoffrey Garen  <ggaren@apple.com>

        Oops, accidentally deleted the archives links.

        * blog/wp-content/themes/webkit/sidebar.php: Bring them back.

2006-03-06  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Beth.

        Some site cleanup.

        * blog/wp-content/themes/webkit/sidebar.php: sync with the sidebar
        for the rest of the site.
        * quality/lifecycle.html: add Joost's homepage to his contact info.

2006-03-06  Geoffrey Garen  <ggaren@apple.com>

        Doing penance after being set straight by Joost.

        * projects/compat/hitlist.html: Remove slur against QA. My humblest
        apologies.

2006-03-06  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Maciej, Darin.

        Added Safari Compatibility Hit List.

        * nav.inc: Link to the hit list.
        * projects/compat/hitlist.html: Added.
        * projects/compat/index.html: Link to the hit list.

2006-03-02  Eric Seidel  <eseidel@apple.com>

        Reviewed by mjs.

        * quality/reporting.html: display a nicer message to those using 10.2

2006-02-26  David Kilzer  <ddkilzer@kilzer.net>

        Reviewed by Maciej, landed by Geoff.

        Change "Deployment" to "Release" and "Development" to "Debug".
        Update latest Xcode version from 2.2 to 2.2.1.

        * building/build.html

2006-02-21  Geoffrey Garen  <ggaren@apple.com>

        Accidentally wrote "Release" instead of "Debug" in my last patch.

        * quality/leakhunting.html:

2006-02-20  Geoffrey Garen  <ggaren@apple.com>

        Some quick proof-reading of the patch I just landed -- no review
        necessary.

        * quality/leakhunting.html:

2006-02-21  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Darin, Geoff.

        Added a page about leakhunting, based on the info Sullivan gave in two blogposts about it. (posts 20 and 24)

        Added this page to the menu, adding in an extra section header
"Testing" as well.

        * nav.inc:
        * quality/leakhunting.html: Added.

2006-02-19  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Darin Adler.

        Fixed Bugzilla URL's

        * projects/forms/index.html:
        * projects/html/index.html:
        * projects/xslt/index.html:

2006-02-19  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Darin Adler.

        Made line-height global instead of just for p

        Editing:
        fixed bugzilla link, added starting <p> to first paragraph
        removed paragraph about tab-stops

        * css/main.css:
        * projects/editing/index.html:

2006-02-17  Darin Adler  <darin@apple.com>

        * coding/coding-style.html: Mention other non-function brace cases.

2006-02-17  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Tim H.

        Added left position and margin-bottom to blog footer.

        * css/main.css:

2006-02-16  Timothy Hatcher  <timothy@apple.com>

        Reviewed by Maciej.

        Fixes PNGs with 8bit alpha on IE.

        * css/ie.css: attach the pngbehavior.htc to img tags
        * images/blank.png: Added.
        * index.html: add the width and height to the download img
        * pngbehavior.htc: Added.

2006-02-16  Justin Garcia  <justin.garcia@apple.com>

        Changed by Darin on my machine.

        * coding/coding-style.html: Re-merged in changes Darin made to the guidelines
        a few days back.

2006-02-16  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed and landed by Maciej.

        Made the author name bold on the frontpage.
        Moved the "Posted by" line up under the title and made the author name
bold in single view.

        * blog/wp-content/themes/webkit/index.php:
        * blog/wp-content/themes/webkit/single.php:

2006-02-15  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Tim H.

        Updated the site to use the new layout.

        * .htaccess: Added.
        * ChangeLog:
        * blog/wp-content/themes/classic: Removed.
        * blog/wp-content/themes/classic/comments-popup.php: Removed.
        * blog/wp-content/themes/classic/comments.php: Removed.
        * blog/wp-content/themes/classic/footer.php: Removed.
        * blog/wp-content/themes/classic/header.php: Removed.
        * blog/wp-content/themes/classic/index.php: Removed.
        * blog/wp-content/themes/classic/sidebar.php: Removed.
        * blog/wp-content/themes/classic/style.css: Removed.
        * blog/wp-content/themes/default: Removed.
        * blog/wp-content/themes/default/404.php: Removed.
        * blog/wp-content/themes/default/archive.php: Removed.
        * blog/wp-content/themes/default/archives.php: Removed.
        * blog/wp-content/themes/default/comments-popup.php: Removed.
        * blog/wp-content/themes/default/comments.php: Removed.
        * blog/wp-content/themes/default/footer.php: Removed.
        * blog/wp-content/themes/default/header.php: Removed.
        * blog/wp-content/themes/default/images: Removed.
        * blog/wp-content/themes/default/images/kubrickbg.jpg: Removed.
        * blog/wp-content/themes/default/images/kubrickbgcolor.jpg: Removed.
        * blog/wp-content/themes/default/images/kubrickbgwide.jpg: Removed.
        * blog/wp-content/themes/default/images/kubrickfooter.jpg: Removed.
        * blog/wp-content/themes/default/images/kubrickheader.jpg: Removed.
        * blog/wp-content/themes/default/index.php: Removed.
        * blog/wp-content/themes/default/links.php: Removed.
        * blog/wp-content/themes/default/page.php: Removed.
        * blog/wp-content/themes/default/search.php: Removed.
        * blog/wp-content/themes/default/searchform.php: Removed.
        * blog/wp-content/themes/default/sidebar.php: Removed.
        * blog/wp-content/themes/default/single.php: Removed.
        * blog/wp-content/themes/default/style.css: Removed.
        * blog/wp-content/themes/webkit/404.php:
        * blog/wp-content/themes/webkit/archive.php:
        * blog/wp-content/themes/webkit/archives.php:
        * blog/wp-content/themes/webkit/footer.php:
        * blog/wp-content/themes/webkit/header.php:
        * blog/wp-content/themes/webkit/images: Removed.
        * blog/wp-content/themes/webkit/images/bluebanner.png: Removed.
        * blog/wp-content/themes/webkit/images/kubrickbg.jpg: Removed.
        * blog/wp-content/themes/webkit/images/kubrickbgcolor.jpg: Removed.
        * blog/wp-content/themes/webkit/images/kubrickbgwide.jpg: Removed.
        * blog/wp-content/themes/webkit/images/kubrickfooter.jpg: Removed.
        * blog/wp-content/themes/webkit/images/kubrickheader.jpg: Removed.
        * blog/wp-content/themes/webkit/images/separator.png: Removed.
        * blog/wp-content/themes/webkit/images/webkit-background.png: Removed.
        * blog/wp-content/themes/webkit/index.php:
        * blog/wp-content/themes/webkit/page.php:
        * blog/wp-content/themes/webkit/search.php:
        * blog/wp-content/themes/webkit/sidebar.php:
        * blog/wp-content/themes/webkit/single.php:
        * blog/wp-content/themes/webkit/style.css:
        * building/build.html:
        * building/checkout.html:
        * coding/coding-style.html:
        * coding/contributing.html:
        * contact.html:
        * css: Added.
        * css/blue.css: Added.
        * css/gray.css: Added.
        * css/green.css: Added.
        * css/ie.css: Added.
        * css/main.css: Added.
        * css/pink.css: Added.
        * css/purple.css: Added.
        * css/yellow.css: Added.
        * footer.inc: Added.
        * header.inc: Added.
        * images/blue-background.png: Added.
        * images/blue-bullet.png: Added.
        * images/bluebanner.png: Removed.
        * images/download.png: Added.
        * images/end.png: Added.
        * images/gray-background.png: Added.
        * images/green-background.png: Added.
        * images/green-bullet.png: Added.
        * images/icon-gold.png: Added.
        * images/icon.png: Added.
        * images/ie-nav.png: Added.
        * images/middle.png: Added.
        * images/nav.png: Added.
        * images/pink-background.png: Added.
        * images/pink-bullet.png: Added.
        * images/purple-background.png: Added.
        * images/purple-bullet.png: Added.
        * images/separator.png: Removed.
        * images/webkit-background.png: Removed.
        * images/welcomeopen.gif: Removed.
        * images/yellow-background.png: Added.
        * images/yellow-bullet.png: Added.
        * index.html:
        * nav.inc: Added.
        * projects/accessibility/index.html:
        * projects/cleanup/index.html:
        * projects/compat/index.html:
        * projects/css/index.html:
        * projects/documentation/index.html:
        * projects/dom/index.html:
        * projects/editing/index.html:
        * projects/forms/index.html:
        * projects/html/index.html:
        * projects/index.html:
        * projects/javascript/index.html:
        * projects/layout/index.html:
        * projects/mathml/index.html:
        * projects/performance/index.html:
        * projects/plugins/index.html:
        * projects/portability/index.html:
        * projects/printing/index.html:
        * projects/svg/index.html:
        * projects/webkit/index.html:
        * projects/xml/index.html:
        * projects/xslt/index.html:
        * quality/bugpriorities.html:
        * quality/bugwriting.html:
        * quality/bugzilla.html:
        * quality/lifecycle.html:
        * quality/reduction.html:
        * quality/reporting.html:
        * quality/testing.html:
        * quality/testwriting.html:
        * sidebar.css: Removed.
        * sidebar.html: Removed.
        * webkitdev.css: Removed.

2006-02-15  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Tim H.

        Updated page to show 10.4.4 or 10.4.5
        Added support for recognizing Shiira.

        * quality/reporting.html:

2006-02-12  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by eseidel.

        Added a little piece of text to the page about reductions, pointing to the bugzilla page.

        Changed "Sign up for a" into "Create a" bugzilla account.

        * quality/reduction.html:
        * quality/reporting.html:

2006-02-12  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Darin Adler.

        Added a Bugzilla page, which contains information about creating a Bugzilla account, what editbugs and canconfirm
        bits are and how to get them.

        Changed link in reporting page to link to Bugzilla page.

        * quality/bugzilla.html: Added.
        * quality/reporting.html:

2006-02-12  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by eseidel.

        - Changed 10.2 paragraph to say Mac OS X instead of just OS X
        - Detabified the file.

        * quality/reporting.html:

2006-02-10  Darin Adler  <darin@apple.com>

        * index.html: Fixed a typo in a link.

2006-02-10  Darin Adler  <darin@apple.com>

        * building/checkout.html: Fixed a spelling mistake.

2006-02-10  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed and landed by Anders.

        http://bugs.webkit.org/show_bug.cgi?id=7164
        Code cleanup

        Changed <div id="banner" to <h1 id="banner"
        global cleanup of CSS and code

        * building/build.html:
        * building/checkout.html:
        * coding/coding-style.html:
        * coding/contributing.html:
        * contact.html:
        * index.html:
        * projects/accessibility/index.html:
        * projects/cleanup/index.html:
        * projects/compat/index.html:
        * projects/css/index.html:
        * projects/documentation/index.html:
        * projects/dom/index.html:
        * projects/editing/index.html:
        * projects/forms/index.html:
        * projects/html/index.html:
        * projects/index.html:
        * projects/javascript/index.html:
        * projects/layout/index.html:
        * projects/mathml/index.html:
        * projects/performance/index.html:
        * projects/plugins/index.html:
        * projects/portability/index.html:
        * projects/printing/index.html:
        * projects/svg/index.html:
        * projects/webkit/index.html:
        * projects/xml/index.html:
        * projects/xslt/index.html:
        * quality/bugpriorities.html:
        * quality/bugwriting.html:
        * quality/lifecycle.html:
        * quality/reduction.html:
        * quality/reporting.html:
        * quality/testing.html:
        * quality/testwriting.html:
        * webkitdev.css:

2006-02-09  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Darin Adler. Landed by ap.

        - fixes from http://bugs.webkit.org/show_bug.cgi?id=4871
        "Reporting Bugs" Page Should Prompt User To Test In Newest Version of WebKit

        * quality/reporting.html:
        * webkitdev.css: Added margin-bottom for li.

2006-02-07  Joost de Valk  <jdevalk@opendarwin.org>

        Reviewed by Darin Adler. Landed by Maciej.

        - Several fixes to the site
        http://bugs.webkit.org/show_bug.cgi?id=7105

        * blog/wp-content/themes/webkit/style.css:
        * index.html:
        * quality/bugwriting.html:
        * quality/reduction.html:
        * webkitdev.css:

2006-02-05  Eric Seidel  <eseidel@apple.com>

        Reviewed by darin.

        General update to SVG project page, also link to status page.

        * projects/svg/index.html:

2006-02-05  Eric Seidel  <eseidel@apple.com>

        Rubber stamped by darin.

        * projects/svg/status.xml: Added.
        * projects/svg/svg-status.css: Added.
        * projects/svg/svg-status.xsl: Added.

2006-02-05  Eric Seidel  <eseidel@apple.com>

        Adding ChangeLog :)

        * ChangeLog: Added.
