2020-01-14  Jon Davis  <jond@apple.com>

        Add Markdown support for Web Inspector Reference articles
        https://bugs.webkit.org/show_bug.cgi?id=206256

        Reviewed by Devin Rousso.

        * wp-content/plugins/web-inspector-pages.php:

2020-01-14  Jon Davis  <jond@apple.com>

        Fix blog post article title justification
        https://bugs.webkit.org/show_bug.cgi?id=206245

        Reviewed by Devin Rousso.

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

2020-01-13  Jon Davis  <jond@apple.com>

        Add support for Web Inspector pages and topic taxonomy
        https://bugs.webkit.org/show_bug.cgi?id=206034

        Reviewed by Devin Rousso.

        * wp-content/plugins/web-inspector-pages.php: Added.
        * wp-content/themes/webkit/archive-web_inspector_page.php: Added.
        * wp-content/themes/webkit/single-web_inspector_page.php: Added.

2020-01-09  Jon Davis  <jond@apple.com>

        Add styles to support Web Inspector reference articles
        https://bugs.webkit.org/show_bug.cgi?id=206032

        Reviewed by Devin Rousso.

        * wp-content/themes/webkit/style.css:
        (main h1,):
        (main h1):
        (article .meta .updated):
        (article .bodycopy,):
        (.image):
        (p .image,):
        (.image.block):
        (.image img):
        (.widescreen .image):
        (.image.slice-top > picture > img):
        (.image.slice-right > picture > img):
        (.image.slice-bottom > picture > img):
        (.image.slice-left > picture > img):
        (.flex):
        (.flex.center):
        (figure.widescreen):
        (article picture):
        (article picture > img):
        (.single-web_inspector_page .landing-link):
        (.single-web_inspector_page .landing-link:hover):
        (@media(prefers-color-scheme:dark) article .invert-brightness,):
        (@media(prefers-color-scheme:dark) .table-of-contents label:after):
        (article h1,): Deleted.
        (article .bodycopy): Deleted.

2020-01-09  Jon Davis  <jond@apple.com>

        Fix redundant anchor tags when generating table of contents
        https://bugs.webkit.org/show_bug.cgi?id=206016

        Reviewed by Devin Rousso.

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

2019-11-13  Myles C. Maxfield  <mmaxfield@apple.com>

        [WebGPU] Update Babylon WebGPU demos to work on ToT
        https://bugs.webkit.org/show_bug.cgi?id=204182

        Reviewed by Dean Jackson.

        3 things were wrong:

        - There seemed to be a bug in the loader script. I fixed the bug and added a local copy
          here so we don't have to keep hotlinking to the Babylon one.
        - I had updated the helmet shaders in
          https://github.com/litherum/Website/commit/f7768ed43012fb06345768211ea90815d81f41b4
          but I didn't update the sphere shaders.
        - r252423 turned off the sphere rendering after 2 seconds. This patch removes that.

        * demos/webgpu/babylon/babylonjs.loaders.min.js: Added.
        (return):
        (return.n.d):
        (return.get n.r):
        (return.n.t):
        (return.):
        (return.n.n):
        (return.n.o):
        * demos/webgpu/babylon/oneHelmetWebGPU.html:
        * demos/webgpu/babylon/oneSphereWebGPU.html:
        * demos/webgpu/babylon/oneSphereWebGPUWSLShaders.js:
        (sampler.reflectionSamplerSampler.register):
        (float3.normal.attribute): Deleted.
        * demos/webgpu/babylon/vertexShaderGLSL1.glsl: Removed. Unnecessary.

2019-11-13  Dean Jackson  <dino@apple.com>

        Fix some WebGPU demos
        https://bugs.webkit.org/show_bug.cgi?id=204167

        Reviewed by Myles C. Maxfield.

        Use COPY_ rather than TRANSFER_.

        * demos/webgpu/babylon/babylonWebGpu.max.js:
        * demos/webgpu/babylon/oneSphereWebGPU.html:
        * demos/webgpu/hello-cube.html:
        * demos/webgpu/scripts/compute-boids-compile.js:
        * demos/webgpu/scripts/compute-boids-utils.js:
        (async.createTextureFromImage):
        * demos/webgpu/textured-cube.html:

2019-11-08  Ryosuke Niwa  <rniwa@webkit.org>

        Add punctuation rules for C++ lambdas
        https://bugs.webkit.org/show_bug.cgi?id=204021

        Reviewed by Zalan Bujtas.

        Added rules for not putting spaces between [] and () and omitting () whenever possible for C++ lambdas.

        * code-style.md:

2019-10-26  Chris Lord  <clord@igalia.com>

        Put OffscreenCanvas behind a build flag
        https://bugs.webkit.org/show_bug.cgi?id=203146

        Reviewed by Ryosuke Niwa.

        Update to reflect split ImageBitmapOffscreenCanvas settings.

        * experimental-features.html:

2019-10-14  Ling Ho  <lingcherd_ho@apple.com>

        Update WebKit Build Archives page on webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=202871

        Reviewed by Alexey Proskuryakov.

        Added Catalina and remove Sierra.

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

2019-09-19  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Update messaging to reflect STP 92 requirement for demos
        https://bugs.webkit.org/show_bug.cgi?id=201931

        Reviewed by Jon Lee.

        Demos don't work anymore on versions of Safari older than STP 92,
        so update WebGPU feature detection to reflect that.

        * demos/webgpu/babylon/babylonWebGpu.max.js:
        * demos/webgpu/babylon/oneHelmetWebGPU.html:
        * demos/webgpu/babylon/oneSphereWebGPU.html:
        * demos/webgpu/compute-blur.html:
        * demos/webgpu/compute-boids-compile.html:
        * demos/webgpu/compute-boids.html:
        * demos/webgpu/hello-cube.html:
        * demos/webgpu/hello-triangle.html:
        * demos/webgpu/scripts/compute-blur.js:
        (async.init):
        * demos/webgpu/scripts/compute-boids-compile.js:
        * demos/webgpu/scripts/hello-triangle.js:
        (async.helloTriangle):
        * demos/webgpu/textured-cube.html:

2019-09-18  Myles C. Maxfield  <mmaxfield@apple.com>

        [WebGPU] Update demos to work on STP 92
        https://bugs.webkit.org/show_bug.cgi?id=201872

        Reviewed by Dean Jackson.

        Updating for new WSL buffer layouts.
        Updating for new WSL compiler struct validation rules.
        GPUShaderStageBit => GPUShaderStage
        GPUColorWriteBits => GPUColorWrite
        GPUBufferUsage.TRANSFER_DST => GPUBufferUsage.COPY_DST
        GPUBufferUsage.TRANSFER_SRC => GPUBufferUsage.COPY_SRC

        * demos/webgpu/babylon/babylonWebGpu.max.js:
        * demos/webgpu/babylon/oneHelmetWebGPUWSLShaders.js:
        (sampler.bumpSamplerSampler.register):
        (sampler.reflectionSamplerSampler.register):
        (float2.uv.attribute): Deleted.
        (float3.normal.attribute): Deleted.
        * demos/webgpu/compute-boids.html:
        * demos/webgpu/hello-cube.html:
        * demos/webgpu/scripts/compute-blur.js:
        (setUpCompute):
        (createShaderCode):
        * demos/webgpu/scripts/compute-boids-compile.js:
        * demos/webgpu/scripts/hello-triangle.js:
        (async.helloTriangle):
        * demos/webgpu/textured-cube.html:

2019-09-09  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Upload Babylon.js, WSL compile, and MotionMark links to demo page
        https://bugs.webkit.org/show_bug.cgi?id=201621

        Reviewed by Dean Jackson.

        Add new demos to the WebGPU demo collection.
        Ensure error alerts/divs display properly if WebGPU is not enabled.

        * demos/webgpu/babylon/oneHelmetWebGPU.html:
        * demos/webgpu/babylon/oneSphereWebGPU.html:
        * demos/webgpu/compute-blur.html:
        * demos/webgpu/compute-boids-compile.html:
        * demos/webgpu/compute-boids.html:
        * demos/webgpu/hello-cube.html:
        * demos/webgpu/hello-triangle.html:
        * demos/webgpu/index.html:
        * demos/webgpu/resources/babylon-helmet.png: Added.
        * demos/webgpu/resources/babylon-sphere.png: Added.
        * demos/webgpu/resources/motionmark.jpeg: Added.
        * demos/webgpu/resources/webkit-logo.png: Added.
        * demos/webgpu/scripts/compute-boids-compile.js:
        * demos/webgpu/textured-cube.html:

2019-09-09  Jon Lee  <jonlee@apple.com>

        Add Babylon demos
        https://bugs.webkit.org/show_bug.cgi?id=201611

        Rubber-stamped by Justin Fan.

        * demos/webgpu/babylon/LICENSE: Added.
        * demos/webgpu/babylon/babylonWebGpu.max.js: Added.
        * demos/webgpu/babylon/logo.svg: Added.
        * demos/webgpu/babylon/oneHelmetWebGPU.html: Added.
        * demos/webgpu/babylon/oneHelmetWebGPUGLSLShaders.js: Added.
        * demos/webgpu/babylon/oneHelmetWebGPUWSLShaders.js: Added.
        * demos/webgpu/babylon/oneSphereWebGPU.html: Added.
        * demos/webgpu/babylon/oneSphereWebGPUGLSLShaders.js: Added.
        * demos/webgpu/babylon/oneSphereWebGPUWSLShaders.js: Added.
        * demos/webgpu/babylon/vertexShaderGLSL1.glsl: Added.

2019-09-09  Jon Lee  <jonlee@apple.com>

        Add boids time test
        https://bugs.webkit.org/show_bug.cgi?id=201612

        Rubber-stamped by Justin Fan.

        * demos/webgpu/compute-boids-compile.html: Added.
        * demos/webgpu/scripts/compute-boids-compile.js: Added.
        * demos/webgpu/scripts/compute-boids-utils.js: Added.

2019-09-03  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Add compute-boids to WebGPU demo page
        https://bugs.webkit.org/show_bug.cgi?id=201416

        Reviewed by Dean Jackson.

        Add the compute-boids demo for use with STP 91.

        * demos/webgpu/compute-boids.html: Added.
        * demos/webgpu/index.html:
        * demos/webgpu/resources/compute-boids.png: Added.

2019-08-06  Justin Fan  <justin_fan@apple.com>

        [WebGPU] Fix up demos on and add compute demo to webkit.org/demos
        https://bugs.webkit.org/show_bug.cgi?id=200454

        Reviewed by Jon Lee.

        Add the compute-blur demo.
        Ensure that WebGPU demos will work on upcoming STP release. 

        * demos/webgpu/compute-blur.html: Added.
        * demos/webgpu/css/style.css: Sync with internal demo repository stylesheet.
        (body):
        (canvas):
        (body.error img):
        (body.error input):
        (#error p):
        * demos/webgpu/hello-cube.html:
        * demos/webgpu/hello-triangle.html:
        * demos/webgpu/index.html:
        * demos/webgpu/resources/compute-blur.png: Added.
        * demos/webgpu/resources/hello-cube.png:
        * demos/webgpu/resources/textured-cube.png: Added.
        * demos/webgpu/scripts/compute-blur.js: Added.
        (async.init):
        (async.loadImage):
        (setUpCompute):
        (async.computeBlur):
        (async.setUniforms):
        (createShaderCode):
        * demos/webgpu/scripts/hello-triangle.js:
        (async.helloTriangle):
        * demos/webgpu/textured-cube.html: Renmaed from Websites/webkit.org/demos/webgpu/hello-cube.html.

2019-07-03  Jon Davis  <jond@apple.com>

        Added a domain check for validation URLs in Apple Pay demo.
        https://bugs.webkit.org/show_bug.cgi?id=199433

        Reviewed by David Kilzer.

        * demos/payment-request/merchant-validation.php:

2019-06-05  Jon Davis  <jond@apple.com>

        Fix icons positioned incorrectly when a featured image is used
        https://bugs.webkit.org/show_bug.cgi?id=198535

        Reviewed by Devin Rousso.

        * wp-content/themes/webkit/style.css:
        (.tile .background-image.loaded svg):
        (.tile .featured-image::before):

2019-06-05  Jon Davis  <jond@apple.com>

        Improve accessibility on webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=198531

        Reviewed by Devin Rousso.

        * wp-content/themes/webkit/functions.php: Added menuitem ARIA role to links
        * wp-content/themes/webkit/widgets/post.php: Added aria-label to SVG icons

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

        Improve performance of the lazy image loader
        https://bugs.webkit.org/show_bug.cgi?id=198530

        Reviewed by Devin Rousso.

        * wp-content/themes/webkit/scripts/global.js:
        (enableScrollableTables):
        (lazyLoadImages):
        (findParentMenu): Deleted.
        (i.m.menus.m.targetMenu.targetMenuClass.indexOf): Deleted.
        (inView): Deleted.
        (): Deleted.
        (loadImage.else.img.onload): Deleted.
        (loadImage): Deleted.
        (onMovement): Deleted.
        (updateImages): Deleted.

2019-05-06  Justin Fan  <justin_fan@apple.com>

        [Web GPU] Add demos to webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=196951

        Reviewed by Dean Jackson.

        Add simple triangle and spinning textured cube demos to the website.
        Add Web GPU to experimental-features.html.

        * demos/webgpu/css/style.css: Added.
        (body):
        (canvas):
        (body.error canvas):
        (h1):
        (#container):
        (select):
        (div#log):
        (body.error):
        (body.error #contents):
        (#error):
        (@media (max-width: 480px)):
        (body.error #error):
        (#error h2):
        (#error p):
        * demos/webgpu/hello-cube.html: Added.
        * demos/webgpu/hello-triangle.html: Added.
        * demos/webgpu/index.html: Added.
        * demos/webgpu/resources/circle.svg: Added.
        * demos/webgpu/resources/hello-cube.png: Added.
        * demos/webgpu/resources/hello-triangle.png: Added.
        * demos/webgpu/resources/safari-alpha.png: Added.
        * demos/webgpu/scripts/gl-matrix-min.js: Added.
        (return.n):
        (return.n.d):
        (return.):
        (return.get n.n):
        (return.n.o):
        * demos/webgpu/scripts/hello-triangle.js: Added.
        (async.helloTriangle):
        * experimental-features.html:

2019-03-28  Jon Davis  <jond@apple.com>

        Fix font family for WebKit.org
        https://bugs.webkit.org/show_bug.cgi?id=196311

        Reviewed by Myles C. Maxfield.

        * wp-content/themes/webkit/header.php: Added SF Mono loading
        * wp-content/themes/webkit/style.css:
        (html): Use Text font by default
        (h1,): Use Display font for large headings
        (.nextrouter-copy): Use Display font for routers

2019-02-21  Ryosuke Niwa  <rniwa@webkit.org>

        Codify the naming convention for fooIfExists
        https://bugs.webkit.org/show_bug.cgi?id=194930

        Reviewed by Darin Adler.

        Updating the coding style guideline after the discussion following
        https://lists.webkit.org/pipermail/webkit-dev/2013-June/025056.html

        * code-style.md:

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

        Added macOS Mojave builds to the WebKit Build Archives.
        https://bugs.webkit.org/show_bug.cgi?id=190908

        Reviewed by Lucas Forschler.

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

2019-02-07  Jon Davis  <jond@apple.com>

        Fixed animation positioning when homepage animation completes
        https://bugs.webkit.org/show_bug.cgi?id=194395

        Reviewed by Devin Rousso.

        * wp-content/themes/webkit/front-header.php:

2019-02-07  Jon Davis  <jond@apple.com>

        Disable the WP emoji polyfill
        https://bugs.webkit.org/show_bug.cgi?id=194394

        Reviewed by Devin Rousso.

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

2019-02-07  Jon Davis  <jond@apple.com>

        Fixed responsive design issues for the Contribute drop-down menu and pagination
        https://bugs.webkit.org/show_bug.cgi?id=194393

        Reviewed by Devin Rousso.

        The short viewport breakpoint styles should apply for small width
        windows as well, and pagination styles need to accommodate wrapped
        text labels.

        * wp-content/themes/webkit/style.css:
        (.pagination .page-numbers,):
        (@media only screen and (max-height: 415px) and (max-width: 920px)):
        (@media only screen and (max-height: 415px)): Deleted.

2019-02-04  Jon Davis  <jond@apple.com>

        Add demos for Intersection Observer API
        https://bugs.webkit.org/show_bug.cgi?id=194219

        Reviewed by Simon Fraser.

        * demos/intersection-observer/lazy-image-load/index.html: Added.
        * demos/intersection-observer/lazy-image-load/scripts.js: Added.
        (ImageLoader):
        (ImageLoader.prototype.findImages):
        (ImageLoader.prototype.smallURLForImage):
        (ImageLoader.prototype.largeURLForImage):
        (ImageLoader.prototype.setupObserver):
        (ImageLoader.prototype.intersectionsChanged):
        * demos/intersection-observer/lazy-image-load/style.css: Added.
        (body):
        (section):
        (header):
        (.main):
        (.main img):
        (.stories):
        (.world, .local):
        (.world):
        (.local):
        (.ad):
        (.contents):
        (.sidebar):
        (.links):
        (.main-story):
        (.main-story img):
        (.top-story):
        (.top-story img):
        (.mid-story img):
        (.link-group):
        (.link-group img):
        (.link-group ul):
        (.link-group li):
        (footer):
        (footer ul):
        (footer a):
        (.footer-col):
        * demos/intersection-observer/simple/script.js: Added.
        (addToLog):
        (clearLog):
        (stringFromRect):
        (intersectedCallback):
        * demos/intersection-observer/simple/simple-observer-iframe.html: Added.
        * demos/intersection-observer/simple/simple-observer-root-margin.html: Added.
        * demos/intersection-observer/simple/simple-observer.html: Added.
        * demos/intersection-observer/simple/styles.css: Added.
        (body):
        (.results):
        (.results button):
        (h2):
        (#logging):
        * demos/intersection-observer/triggered-animation/index.html: Added.
        * demos/intersection-observer/triggered-animation/script.js: Added.
        (AnimationManager):
        (AnimationManager.prototype.setupObserver):
        (AnimationManager.prototype.intersectionsChanged):
        * demos/intersection-observer/triggered-animation/style.css: Added.
        (body):
        (p):
        (.animation-container h1):
        (.animation-container):
        (.animation-container .box):
        (.slide.box):
        (.animation-container.visible > .slide.box):
        (.slide.animation-container div:nth-of-type(1)):
        (.slide.animation-container div:nth-of-type(2)):
        (.slide.animation-container div:nth-of-type(3)):
        (.spin):
        (.animation-container.visible .spin):
        (@keyframes spin):
        (to):
        (.animation-container.svg):
        (.animation-container.svg path):
        (.animation-container.svg.visible):
        (@keyframes stroke-move):
        (.animation-container.svg circle):
        (.animation-container.svg.visible circle):
        (.animation-container.svg circle:nth-of-type(2)):
        (.animation-container.svg circle:nth-of-type(3)):
        (.animation-container.svg circle:nth-of-type(4)):
        (.animation-container.svg circle:nth-of-type(5)):
        (@keyframes circle-scale):

2019-01-25  Jon Davis  <jond@apple.com>

        Added feature status entry for "Removed in Preview"
        https://bugs.webkit.org/show_bug.cgi?id=193794

        Reviewed by Joseph Pecoraro.

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

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

        Ensure new styles are served on webkit.org.
        https://bugs.webkit.org/show_bug.cgi?id=192953

        Rubber-stamped by Devin Rousso.

        * tabicon.svg: Removed as vector icons are no longer preferred.
        * wp-content/themes/webkit/header.php: Updated stylesheet datestamp.

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

        Added a dark mode color scheme.
        https://bugs.webkit.org/show_bug.cgi?id=192930

        Reviewed by Timothy Hatcher.

        * .htaccess: Added convenience redirects for /features and /css-features
        * wp-content/themes/webkit/build-archives.php: Customized dark color styles for the page.
        * wp-content/themes/webkit/css-status.php: Implemented new design and dark styles support.
        * wp-content/themes/webkit/front-header.php: Added dark color styles.
        * wp-content/themes/webkit/functions.php: Added new feature status navigation menu.
        * wp-content/themes/webkit/header.php: Specify support for light and dark color schemes.
        * wp-content/themes/webkit/images/chevron-dark.svg: Added.
        * wp-content/themes/webkit/images/chevron.svg: Switch to HSL color.
        * wp-content/themes/webkit/images/filter.svg: Added.
        * wp-content/themes/webkit/images/icons.svg: Use currentColor for dark mode.
        * wp-content/themes/webkit/images/invert-lightness.svg: Added.
        * wp-content/themes/webkit/images/search.svg: Added.
        * wp-content/themes/webkit/sitemap.php: Customized dark color styles for the page.
        * wp-content/themes/webkit/status.php: Updated design and dark styles support.
        * wp-content/themes/webkit/style.css: Added dark style rules and switched to custom properties.
        (:root):
        (@media(prefers-color-scheme:dark)):
        (body):
        (a):
        (a,):
        (hr):
        (code):
        (main):
        (a[name]):
        (p > a[name]::before):
        (a[name]:hover):
        (a[name]:hover::before):
        (p:hover > a[name]::before):
        (input[type=text]):
        (input[type=submit]):
        (.screen-reader-text:focus):
        (.pagination .page-numbers,):
        (.pagination .menu-item a):
        (.pagination .page-numbers:not(.current, .dots):hover):
        (.pagination .dots,):
        (.connected.pagination .menu-item):
        (.connected.pagination .menu-item:hover a):
        (.connected.pagination .menu-item:first-child a):
        (.connected.pagination .menu-item:last-child a):
        (.connected.pagination .menu-item.current-menu-item a,):
        (.menu-feature-pages-container):
        (.nextrouter):
        (.nextrouter.previous):
        (.nextrouter:hover,):
        (.nextrouter a):
        (.nextrouter-copy):
        (.nextrouter .label):
        (.nextrouter .link):
        (.tiles):
        (.tile):
        (.tile .background-image):
        (.tile .background-image svg):
        (.tile.category-web-inspector svg):
        (.tile.category-performance svg):
        (.tile.category-javascript svg):
        (.tile.category-css svg):
        (.tile.category-standards svg):
        (.tile.category-contributing svg):
        (.tile.category-storage svg):
        (.tile.category-layout svg):
        (.tile.category-safari-technology-preview svg):
        (.tile.category-accessibility svg):
        (.tile.category-security svg):
        (.tile.category-privacy svg):
        (.tile .background-image.loaded):
        (.tile:not(.has-post-thumbnail) .background-image,):
        (.featured-tile .tile-content):
        (.background-vignette):
        (.tag-window .background-image):
        (.tag-window .background-vignette):
        (.featured-tile.tag-dark .background-vignette):
        (.featured-tile.tag-dark .tile-content):
        (.featured-tile.tag-dark .tile-content a):
        (.icon-tile .icon):
        (.icon-tile,):
        (.gray-tile):
        (.gray-tile a):
        (.amber-tile):
        (.blue-tile):
        (.twitter-tile):
        (.icon.twitter-icon):
        (pre):
        (code .keyword,):
        (code .keyword.builtin,):
        (code .keyword.type):
        (code .preprocessor):
        (code .comment):
        (code .comment .doc):
        (code .identifier):
        (code .string,):
        (code .escaped):
        (code .number,):
        (code .regex,):
        (code .attribute.value):
        (code .operator):
        (code .keyword.operator):
        (code .whitespace):
        (code .error):
        (code .doctype):
        (code .property):
        (code.xml .comment,):
        (code.xml .preprocessor .keyword):
        (code.xml .meta,):
        (code.cpp .preprocessor .identifier):
        (pre::-moz-selection,):
        (pre::selection, pre span::selection):
        (code.css .attribute,):
        (code.css .keyword):
        (code.css .number):
        (article h1,):
        (article .byline p):
        (article thead, article tfoot):
        (article tr):
        (article blockquote):
        (.post .bodycopy > p:last-child:after):
        (article div.note):
        (article .foreword):
        (article .cliptop):
        (article .clipbottom):
        (article .clipright):
        (article .clipleft):
        (article .mattewhite):
        (article .mattewhite:not(.widescreen)):
        (figure.table):
        (article figcaption):
        (article figcaption::before):
        (.table-of-contents):
        (.site-logo):
        (.feature-header:after,):
        (header nav a,):
        (header nav a:hover,):
        (.sub-menu-layer):
        (.sub-menu-layer:after):
        (.sub-menu-layer:before):
        (@media only screen and (max-width: 920px)):
        (header .menu):
        (header nav a):
        (header .menu > .menu-item > .sub-menu):
        (@media only screen and (max-width: 690px)):
        (article .scrollable):
        (@media only screen and (max-width: 600px)):
        (.table-of-contents label:after):
        (@media only screen and (max-width: 415px)):
        (article .invert-brightness,):
        (.preserve-color, video):
        (.preserve-color:hover,):
        (.nextrouter .link,):
        (.search-input):
        (.filters-toggle-button):
        (a > code): Deleted.
        (.pagination .page-numbers): Deleted.
        (.nextrouter:hover): Deleted.
        (.nextrouter.previous:hover): Deleted.
        (.icon-tile, .icon-tile a): Deleted.
        (.gray-tile, .gray-tile a): Deleted.
        (code .string, code .char): Deleted.
        (code .number, code .tag): Deleted.
        (code .regex, code .attribute): Deleted.
        (code.xml .meta, code.xml .meta .keyword): Deleted.
        (code::-moz-selection, code span::-moz-selection): Deleted.
        (code::selection, code span::selection): Deleted.
        (article h1 a): Deleted.
        (.feature-header:after): Deleted.
        (.feature.opened .feature-header:after): Deleted.
        * wp-content/themes/webkit/team.php: Customized dark color styles for the page.

2018-12-01  Simon Fraser  <simon.fraser@apple.com>

        webkit.org/css-status is broken
        https://bugs.webkit.org/show_bug.cgi?id=192278

        Reviewed by Zalan Bujtas.

        Remove a stray '='.

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

2018-11-09  Jon Davis  <jond@apple.com>

        Clean-up stray whitespace in theme files
        https://bugs.webkit.org/show_bug.cgi?id=191430

        Reviewed by Dean Jackson.

        * wp-content/themes/webkit/css-status.php:
        * wp-content/themes/webkit/footer.php:
        * wp-content/themes/webkit/front-page.php:
        * wp-content/themes/webkit/includes.php:
        * wp-content/themes/webkit/nightly-start.php:
        * wp-content/themes/webkit/nightly-survey.php:
        * wp-content/themes/webkit/page.php:
        * wp-content/themes/webkit/scripts/global.js:
        * wp-content/themes/webkit/scripts/searchbuilds.js:
        (initsearch):
        (initsearch.displayError):
        * wp-content/themes/webkit/single.php:
        * wp-content/themes/webkit/sitemap.php:
        * wp-content/themes/webkit/team.php:
        * wp-content/themes/webkit/widgets/icon.php:
        * wp-content/themes/webkit/widgets/page.php:

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

        Follow-up fix for the webkit.org blog index page
        https://bugs.webkit.org/show_bug.cgi?id=191216

        Reviewed by Timothy Hatcher.

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

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

        Improved the SVG icons to use SVG symbols
        https://bugs.webkit.org/show_bug.cgi?id=191205

        Reviewed by Timothy Hatcher.

        This change makes it far easier to add new SVG icons to the
        icons.svg sprite and provides better positioning control
        over the icons within the blog post tile frame.

        * wp-content/themes/webkit/front-page.php:
        * wp-content/themes/webkit/functions.php:
        * wp-content/themes/webkit/header.php:
        * wp-content/themes/webkit/images/icons.svg:
        * wp-content/themes/webkit/index.php:
        * wp-content/themes/webkit/loop.php:
        * wp-content/themes/webkit/style.css:
        (@supports ( -webkit-backdrop-filter: blur(10px) )):
        (footer):
        (#icons):
        (.tile .background-image):
        (.tile .background-image svg):
        (.tile.category-web-inspector svg):
        (.tile.category-performance svg):
        (.tile.category-javascript svg):
        (.tile.category-css svg):
        (.tile.category-standards svg):
        (.tile.category-contributing svg):
        (.tile.category-storage svg):
        (.tile.category-layout svg):
        (.tile.category-safari-technology-preview svg):
        (.tile.category-accessibility svg):
        (.tile.category-security svg):
        (.tile.category-privacy svg):
        (header .menu-item-has-children .label-toggle::after):
        (@media only screen and (max-width: 920px)):
        (.main-menu.label-toggle):
        (header .menu):
        (@media only screen and (max-width: 690px)):
        (@media only screen and (max-width: 415px)):
        (@media only screen and (max-height: 415px)):
        (.tile.category-web-inspector .background-image): Deleted.
        (.tile.category-performance .background-image): Deleted.
        (.tile.category-javascript .background-image): Deleted.
        (.tile.category-css .background-image): Deleted.
        (.tile.category-standards .background-image): Deleted.
        (.tile.category-contributing .background-image): Deleted.
        (.tile.category-storage .background-image): Deleted.
        (.tile.category-layout .background-image): Deleted.
        (.tile.category-safari-technology-preview .background-image): Deleted.
        (.tile.category-accessibility .background-image): Deleted.
        (.tile.tag-console .background-image,): Deleted.
        (.tile.tag-console .background-image): Deleted.
        (.tile.tag-debugger .background-image): Deleted.
        (.tile.tag-shortcuts .background-image): Deleted.
        (.tile.tag-timeline .background-image): Deleted.
        * wp-content/themes/webkit/widgets/post.php:

2018-11-01  Jon Davis  <jond@apple.com>

        Prevent homepage animation for users that prefer reduced motion
        https://bugs.webkit.org/show_bug.cgi?id=188211

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/front-header.php:

2018-10-25  Jon Davis  <jond@apple.com>

        Added support for "deprecated" feature status
        https://bugs.webkit.org/show_bug.cgi?id=187615

        Reviewed by Joseph Pecoraro.

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

2018-10-12  Devin Rousso  <drousso@apple.com>

        Add a demo for WebInspector scanvas debugging.

        * demos/canvas-debugging/index.html: Added.

2018-10-08  Justin Fan  <justin_fan@apple.com>

        WebGPU: Rename old WebGPU prototype to WebMetal
        https://bugs.webkit.org/show_bug.cgi?id=190325
        <rdar://problem/44990443>

        Reviewed by Dean Jackson.

        Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

        * demos/webgpu/shared.js: Removed.
        * demos/webmetal/2d.html: Renamed from Websites/webkit.org/demos/webgpu/2d.html.
        * demos/webmetal/2d.jpg: Renamed from Websites/webkit.org/demos/webgpu/2d.jpg.
        * demos/webmetal/2d.js: Renamed from Websites/webkit.org/demos/webgpu/2d.js.
        (init):
        * demos/webmetal/circle.svg: Renamed from Websites/webkit.org/demos/webgpu/circle.svg.
        * demos/webmetal/cubes.html: Renamed from Websites/webkit.org/demos/webgpu/cubes.html.
        * demos/webmetal/cubes.jpg: Renamed from Websites/webkit.org/demos/webgpu/cubes.jpg.
        * demos/webmetal/cubes.js: Renamed from Websites/webkit.org/demos/webgpu/cubes.js.
        (init):
        * demos/webmetal/gl-matrix-min.js: Renamed from Websites/webkit.org/demos/webgpu/gl-matrix-min.js.
        * demos/webmetal/hello.html: Renamed from Websites/webkit.org/demos/webgpu/hello.html.
        * demos/webmetal/hello.jpg: Renamed from Websites/webkit.org/demos/webgpu/hello.jpg.
        * demos/webmetal/hello.js: Renamed from Websites/webkit.org/demos/webgpu/hello.js.
        (init):
        * demos/webmetal/index.html: Renamed from Websites/webkit.org/demos/webgpu/index.html.
        * demos/webmetal/shared.css: Renamed from Websites/webkit.org/demos/webgpu/shared.css.
        * demos/webmetal/shared.js: Added.
        (const.hasWebMetal):
        (const.checkForWebMetal):
        * demos/webmetal/simple.html: Renamed from Websites/webkit.org/demos/webgpu/simple.html.
        * demos/webmetal/simple.jpg: Renamed from Websites/webkit.org/demos/webgpu/simple.jpg.
        * demos/webmetal/simple.js: Renamed from Websites/webkit.org/demos/webgpu/simple.js.
        (init):
        * experimental-features.html:

2018-09-05  Fujii Hironori  <Hironori.Fujii@sony.com>

        Update code style guidelines for using namespace inside a namespace definition
        https://bugs.webkit.org/show_bug.cgi?id=189298

        Reviewed by Ryosuke Niwa.

        "using namespace" statements should be inside namespace definitions for
        unified source builds.

        * code-style.md(#using-position):

2018-08-31  Dean Jackson  <dino@apple.com>

        Add support for USDZ to webkit.org for a sample file
        https://bugs.webkit.org/show_bug.cgi?id=189217

        Rubber-stamped by Anders Carlsson.

        Use the accepted MIME-type for USDZ files, and provide a
        simple example file.

        * .htaccess: Serve USD with a MIME-type that we will accept.
        * demos/ar/heart.usdz: Added.

2018-07-24  Jon Davis  <jond@apple.com>

        Disable some vestibular trigger animations when prefers-reduced-motion is active.
        https://bugs.webkit.org/show_bug.cgi?id=186529

        Reviewed by Dean Jackson.

        * wp-content/themes/webkit/style.css:
        (@media (prefers-reduced-motion)): Added to honor reduced motion settings.
        (article,): Added to only use fade-in animation and prevent motion.

2018-06-20  Manuel Rego Casasnovas  <rego@igalia.com>

        [WPE] Some fixups on webkit.org page
        https://bugs.webkit.org/show_bug.cgi?id=186844

        Unreviewed as the content is not modified, only some minor fixups on the format.

        * wpe.md: Remove title as it's already provided by the website CMS.
        Avoid breaking lines at 80 chars as it's not rendered as expected.

2018-06-20  Manuel Rego Casasnovas  <rego@igalia.com>

        [WPE] Add page for webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=186844

        Reviewed by Michael Catanzaro.

        * wpe.md: Added.

2018-06-14  Roy Reapor  <rreapor@apple.com>

        Use new jQuery file layout
        https://bugs.webkit.org/show_bug.cgi?id=186636

        Reviewed by Aakash Jain.

        * ajax/libs/jqueryui/jquery-ui-1.8.15.css: Removed.
        * ajax/libs/jqueryui/jquery-ui-1.8.15.min.js: Removed.

2018-06-14  Jon Davis  <jond@apple.com>

        Minor layout fix for WebKit Feature Status Page
        https://bugs.webkit.org/show_bug.cgi?id=186539

        Reviewed by Timothy Hatcher.

        * wp-content/themes/webkit/status.php: Added padding below the bottom paragraph.

2018-06-14  Roy Reapor  <rreapor@apple.com>

        jQuery UI image assets are missing on webkit.org website.
        https://bugs.webkit.org/show_bug.cgi?id=185949

        Reviewed by Aakash Jain.

        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-bg_flat_75_ffffff_40x100.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-bg_glass_65_ffffff_1x400.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-bg_glass_75_dadada_1x400.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-icons_222222_256x240.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-icons_2e83ff_256x240.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-icons_454545_256x240.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-icons_888888_256x240.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/images/ui-icons_cd0a0a_256x240.png: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery-ui.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.accordion.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.all.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.autocomplete.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.base.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.button.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.core.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.datepicker.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.dialog.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.progressbar.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.resizable.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.selectable.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.slider.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.tabs.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/themes/base/jquery.ui.theme.min.css: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery-ui.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.blind.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.bounce.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.clip.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.core.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.drop.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.explode.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.fade.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.fold.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.highlight.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.pulsate.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.scale.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.shake.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.slide.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.effects.transfer.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.accordion.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.autocomplete.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.button.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.core.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.datepicker.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.dialog.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.draggable.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.droppable.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.mouse.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.position.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.progressbar.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.resizable.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.selectable.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.slider.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.sortable.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.tabs.min.js: Added.
        * ajax/libs/jqueryui/1.8.15/ui/jquery.ui.widget.min.js: Added.

2018-06-05  Antoine Quint  <graouts@apple.com>

        [Web Animations] Only expose CSSAnimation and CSSTransition if the WebAnimationsCSSIntegration runtime flag is enabled
        https://bugs.webkit.org/show_bug.cgi?id=186305

        Reviewed by Dean Jackson.

        Add a test for the WebAnimationsCSSIntegration runtime flag.

        * experimental-features.html:

2018-06-01  Dean Jackson  <dino@apple.com>

        Add a demo for passive touch listeners.

        * demos/passive-touches/index.html: Added.

2018-05-23  Roy Reapor  <rreapor@apple.com>

        Remove Source Sans Pro from WebKit website
        https://bugs.webkit.org/show_bug.cgi?id=185871

        Reviewed by Aakash Jain.

        * demos/spring/index.html:

2018-05-22  Roy Reapor  <rreapor@apple.com>

        Test infrastructure websites should use jQuery and jQuery UI hosted on webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=185788

        Reviewed by Aakash Jain.

        * ajax/libs/jquery/jquery-1.6.2.min.js: Added.
        * ajax/libs/jqueryui: Added.
        * ajax/libs/jqueryui/jquery-ui-1.8.15.css: Added.

2018-05-22  Wenson Hsieh  <wenson_hsieh@apple.com>

        Add some additional demo content to webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=185892

        Reviewed by Tim Horton.

        Adds three demo pages, and some placeholder assets.

        * demos/extrazoom/article/constitution.jpg: Added.
        * demos/extrazoom/article/index.html: Added.
        * demos/extrazoom/login/index.html: Added.
        * demos/extrazoom/login/webkit.svg: Added.
        * demos/extrazoom/recipes/butterchicken.jpg: Added.
        * demos/extrazoom/recipes/chowder.jpg: Added.
        * demos/extrazoom/recipes/hummus.jpg: Added.
        * demos/extrazoom/recipes/index.html: Added.
        * demos/extrazoom/recipes/padthai.jpg: Added.
        * demos/extrazoom/recipes/pizza.jpg: Added.
        * demos/extrazoom/recipes/salmon.jpg: Added.
        * demos/extrazoom/recipes/steak.jpg: Added.
        * demos/extrazoom/recipes/tacos.jpg: Added.

2018-04-26  Ross Kirsling  <ross.kirsling@sony.com>

        Update code style guidelines to mention braced initialization style.
        https://bugs.webkit.org/show_bug.cgi?id=185053

        Reviewed by Ryosuke Niwa.

        * code-style.md:
        Add a clause to the Spacing section about braced initialization.
        (Also, fix an erroneous element ID on a neighboring line.)

2018-04-04  Andy Estes  <aestes@apple.com>

        Unreviewed. Correct the path to merchant-validation-config.php.

        * demos/payment-request/merchant-validation.php:

2018-04-04  Andy Estes  <aestes@apple.com>

        Add Payment Request demo content.

        Rubber-stamped by Zalan Bujtas.

        * demos/payment-request/demo.js: Added.
        (string_appeared_here.async.applePayButtonClicked):
        * demos/payment-request/index.html: Added.
        * demos/payment-request/merchant-validation.php: Added.
        * demos/payment-request/squirrelfish.png: Added.
        * demos/payment-request/style.css: Added.
        (@supports (-webkit-appearance: -apple-pay-button)):
        (.apple-pay-not-supported::before):
        (.hidden):
        (#black-buttons > .apple-pay-button):
        (#white-buttons > .apple-pay-button):
        (#demo):
        (#description):

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.
