Compare commits

...

6 commits

Author SHA1 Message Date
fcdb288d3d
chore(release): bump v1.18.2 [skip-docs]
Version 1.18.2 in plugin.json, the README badge and SECURITY.md, with the changelog entry: screenshots regenerated from the current demo, older sets removed, manifest gate added. Not tagged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 15:07:26 +02:00
2e9bc5e0bb
fix(playground): align the demo project description with its reports
The demo project card now describes the system the 17 demo reports are about: a citizen chatbot that pre-assesses applications for municipal housing allowance (bostøtte) from uploaded attachments. It previously described a building-permit (byggesak) chatbot that no report mentions.

Six fixtures (classify, requirements, conformity, review, adr, summary) are set equal to the corrected text already inlined in the demo block: the Annex III deadline 2027-12-02 and the 2026-08-02 transparency label, instead of 2027-08-02. Chose syncing the fixtures to the block over editing the block by hand, because the block is build output and a rebuild from the old fixtures would have put the wrong deadlines back in the demo.

Rebuilt the demo state and regenerated the 24 screenshots once with tests/screenshot/run.mjs; MANIFEST.json matches the new demo state.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 15:06:19 +02:00
d670e7b3ee
test(playground): require every inlined demo report to equal its fixture
The demo block is output of scripts/build-demo-state.mjs, so each inlined report must equal playground/test-fixtures/<id>.md. Red on 70731af: classify, requirements, conformity, review, adr and summary differ. The block carries the corrected AI Act deadlines while the fixtures still carry 2027-08-02, so the next rebuild would silently put the old dates back in the demo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 15:06:19 +02:00
820d62ddb4
test(playground): require the demo project description to match its reports
New gate tests/kb-update/test-demo-project-description.test.mjs. The demo project card must name the domain of the classify fixture's system description (bostøtte), must not name byggesak, and the inlined description must match scripts/build-demo-state.mjs. Red on 70731af: 1 of 3 fails.

Chose a pinned domain term shared with the classify fixture over a generic word-overlap score, because the old description already shared generic words (kommune, chatbot, innbyggere) with the reports and would have passed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 15:06:19 +02:00
2ed24add12
fix(screenshots): regenerate screenshots from the current demo, remove older sets
tests/screenshot/run.mjs now clears PNGs a previous run left in its output directory and writes playground/screenshots/MANIFEST.json (output directory, sha256 per PNG, sha256 of the demo state rendered). One run produced the 24 PNGs in playground/screenshots/v1.15.0/ (12 surfaces x 2 themes, including the dark onboarding view removed in 1.18.1).

Removed the v1.10.0, v1.11.0, v1.14.0 and v2-mockup sets (77 PNGs) and tests/screenshot/shoot-mockup.local.mjs. Chose regenerate for the set the runner writes and delete for the rest, because the current runner cannot reproduce the older layouts, and the mockup script reads an HTML file that is not in the repository, so its output could never be regenerated from a clone.

README gallery, docs/playground.md and tests/screenshot/README.md now point at v1.15.0 and describe the 12 surfaces the runner captures. The manifest gate goes green: 4/4.

OCR (Apple Vision, local): 0 of 24 PNGs in the tree carry text from the older demo; known positives from 715950b were found (2 of 2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 14:43:42 +02:00
fa73e2d880
test(screenshots): require every PNG to be output of the current screenshot run
New gate tests/kb-update/test-screenshots-manifest.test.mjs. The screenshot runner will write playground/screenshots/MANIFEST.json (output directory, sha256 per PNG, sha256 of the demo state it rendered). The gate fails when a PNG in the tree is not in the manifest, an entry is missing or changed, the demo state changed after the run, or a doc points at another screenshot directory.

Chose a manifest written by run.mjs over a hand-kept hash list, because the runner is the only thing that can vouch for its own output, and the demo hash turns screenshots older than the demo into a failing test instead of a review finding.

Red on 715950b: 4/4 fail, 100 of 100 PNGs unlisted, manifest missing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 14:36:03 +02:00
120 changed files with 303 additions and 93 deletions

View file

@ -1,6 +1,6 @@
{
"name": "ms-ai-architect",
"version": "1.18.1",
"version": "1.18.2",
"description": "Microsoft AI Solution Architect - structured architecture guidance for the full Microsoft AI stack",
"author": {
"name": "Kjell Tore Guttormsen"

View file

@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [1.18.2] - 2026-09-23
### Changed
- Regenerated the playground screenshots from the current demo: 24 PNGs (12 surfaces × 2 themes) in `playground/screenshots/v1.15.0/`, including the dark onboarding view removed in 1.18.1. The README gallery, `docs/playground.md` and `tests/screenshot/README.md` describe this set.
- `tests/screenshot/run.mjs` clears PNGs a previous run left behind and writes `playground/screenshots/MANIFEST.json` (sha256 per PNG and of the demo state rendered).
- Aligned the demo project description with its reports (a housing-allowance chatbot, not building permits) and set six demo fixtures equal to the corrected AI Act deadlines already shown in the demo; `tests/kb-update/test-demo-project-description.test.mjs` keeps the demo block equal to its fixtures.
### Removed
- The v1.10.0, v1.11.0, v1.14.0 and v2-mockup screenshot sets (77 PNGs), which showed an earlier demo, and `tests/screenshot/shoot-mockup.local.mjs`, whose input file is not in the repository.
### Added
- `tests/kb-update/test-screenshots-manifest.test.mjs`: fails when a PNG in the tree is not output of the latest screenshot run, a PNG changed, the demo state changed after the run, or a doc points at another screenshot directory.
## [1.18.1] - 2026-09-23
### Changed

View file

@ -8,7 +8,7 @@ Microsoft AI Solution Architect — structured architecture guidance for the ful
*AI-generated: all code produced by Claude Code through dialog-driven development. Every change is human-directed, reviewed, and validated before commit.*
![Version](https://img.shields.io/badge/version-1.18.1-blue)
![Version](https://img.shields.io/badge/version-1.18.2-blue)
![Platform](https://img.shields.io/badge/platform-Claude_Code_Plugin-purple)
![Docs](https://img.shields.io/badge/reference_docs-389-green)
![Agents](https://img.shields.io/badge/agents-12-orange)
@ -439,22 +439,24 @@ node scripts/build-demo-state.mjs
### Screenshot gallery
Screenshots of every surface in both themes live in `playground/screenshots/v1.11.0/` (the v1.10.0 set is preserved as historical reference). They are committed so forkers see what the plugin produces without running anything:
Screenshots of every surface in both themes live in `playground/screenshots/v1.15.0/`, taken of the current demo project. They are committed so forkers see what the plugin produces without running anything:
| # | File | What you see |
|---|------|--------------|
| 01 | `01-onboarding-empty-light.png` | Onboarding surface, empty state (the dark variant was removed in 1.18.1; regenerate to restore it) |
| 02 | `02-project-rapporter-regulatory-{dark,light}.png` | All 6 regulatory renderers (classify pyramid, requirements, transparency, FRIA, conformity kanban, DPIA matrix) |
| 03 | `03-project-rapporter-security-{dark,light}.png` | 6×5 + 7×5 risk matrices, radar, top-risks, residual-pair, recommendation-card, review kanban |
| 03 | `03-project-rapporter-economy-{dark,light}.png` | Cost distribution P10/P50/P90, license capability matrix |
| 03 | `03-project-rapporter-documentation-{dark,light}.png` | Migrate mat-ladder, ADR critique-card, summary read-more, POC traffic-light, utredning screen-tabs, compare scenario-cards |
| 03 | `03-project-rapporter-tool-{dark,light}.png` | 7 tool commands (no report — pipeline-string builders) |
| 04-06 | `04-project-oversikt-{dark,light}.png` etc. | Project screen-tabs (oversikt / kontekst / eksport) |
| 07 | `07-home-{dark,light}.png` | Home with project list + 3 entry tracks |
| 08 | `08-catalog-{dark,light}.png` | Catalog with 29 commands in 5 expansion-grupper |
| 09 | `09-onboarding-prefilled-{dark,light}.png` | Onboarding with state from demo |
| 01 | `01-onboarding-empty-{dark,light}.png` | Onboarding surface, empty state |
| 02 | `02-project-overview-{dark,light}.png` | Project view: sidebar with 17 artifacts, aggregate verdict, top risks |
| 03 | `03-project-artifact-classify-{dark,light}.png` | EU AI Act classification (risk pyramid, role, obligations) |
| 04 | `04-project-artifact-security-{dark,light}.png` | Security assessment (6×5 matrix) |
| 05 | `05-project-artifact-ros-{dark,light}.png` | ROS analysis (risk matrix, radar) |
| 06 | `06-project-artifact-cost-{dark,light}.png` | Cost estimate (P10/P50/P90 in NOK) |
| 07 | `07-project-artifact-summary-{dark,light}.png` | Technical summary and decision note |
| 08 | `08-project-import-modal-{dark,light}.png` | Import modal (viewport only) |
| 09 | `09-project-search-{dark,light}.png` | Sidebar search filtering artifacts |
| 10 | `10-home-{dark,light}.png` | Home with project list |
| 11 | `11-catalog-{dark,light}.png` | Command catalog |
| 12 | `12-onboarding-prefilled-{dark,light}.png` | Onboarding with state from the demo |
Regenerate via `cd tests/screenshot && npm install && npx playwright install chromium && node run.mjs`.
Regenerate via `cd tests/screenshot && npm install && npx playwright install chromium && node run.mjs`. The run also writes `playground/screenshots/MANIFEST.json`; `tests/kb-update/test-screenshots-manifest.test.mjs` fails when a screenshot in the tree is not from the latest run or the demo changed after it.
### Validation

View file

@ -21,7 +21,7 @@ disclose within 90 days of the initial report.
## Supported versions
The latest tagged release (currently 1.18.1) is the only supported
The latest tagged release (currently 1.18.2) is the only supported
version. Security fixes land on `main` and are released as a new tag;
we do not backport fixes to older releases. See `CHANGELOG.md` for the
release history.

View file

@ -34,7 +34,7 @@ Erstatter v2 5-stegs-pipelinen med en multi-surface-app som persisterer state og
`scripts/build-demo-state.mjs` leser alle 17 fixture-filer fra `playground/test-fixtures/` og injiserer dem som en `<script type="application/json" id="demo-state-v1">`-blokk i playground HTML (idempotent — erstatter eksisterende blokk). "Last inn demo-data"-knappen på onboarding-overflaten kaller `ACTIONS['load-demo']` som leser blokken, erstatter alle state-grener via Proxy-mutasjon, kjører `migrateDataVersion` (v2→v3 auto-parser raw_markdown til artifacts), og navigerer til project-surface. Demo viser 17 artifacts gruppert i sidebar med severity-badges, aggregate verdict (BLOKKERT), top-risks-liste, og fungerende re-importer/slett-knapper per artifact.
`tests/screenshot/` inneholder en frittstående Playwright-runner med egen `package.json` (gitignored `node_modules`). `node run.mjs` produserer 24 PNG-er (12 surfaces × 2 tema) under `playground/screenshots/v1.15.0/`. v1.15.0-surfaces: onboarding-empty, project-overview, project-artifact-{classify,security,ros,cost,summary}, project-import-modal (viewport-only — modal er position:fixed overlay), project-search, home, catalog, onboarding-prefilled. v1.10.0/v1.11.0/v1.14.0 beholdt som historisk referanse. Disse committes så forkere ser pluginen uten å installere noe. Demo-org er "Acme Kommune" og demo-prosjekt er "Acme: Kunde-chatbot".
`tests/screenshot/` inneholder en frittstående Playwright-runner med egen `package.json` (gitignored `node_modules`). `node run.mjs` produserer 24 PNG-er (12 surfaces × 2 tema) under `playground/screenshots/v1.15.0/`. v1.15.0-surfaces: onboarding-empty, project-overview, project-artifact-{classify,security,ros,cost,summary}, project-import-modal (viewport-only — modal er position:fixed overlay), project-search, home, catalog, onboarding-prefilled. Runneren sletter PNG-er en tidligere kjøring la igjen, og skriver `playground/screenshots/MANIFEST.json` (sha256 per PNG + sha256 av demo-state-blokken). `tests/kb-update/test-screenshots-manifest.test.mjs` feiler når et PNG i treet ikke er output fra siste kjøring, eller demoen er endret etter at bildene ble tatt — kjør `node run.mjs` på nytt. Eldre sett (v1.10.0, v1.11.0, v1.14.0, v2-mockup) er fjernet i 1.18.2. Disse committes så forkere ser pluginen uten å installere noe. Demo-org er "Acme Kommune" og demo-prosjekt er "Acme: Kunde-chatbot".
## Design-system 100%-adoption (v1.11.0 → v1.14.0)

View file

@ -239,7 +239,7 @@
{
"id": "acme-kunde-chatbot",
"name": "Acme: Kunde-chatbot",
"description": "AI-chatbot som hjelper innbyggere med byggesak-spørsmål. Trenger DPIA, ROS, EU AI Act-klassifisering og kostnadsestimat før beslutning. Alle 17 rapport-typer er pre-importert med eksempel-data.",
"description": "AI-chatbot som svarer innbyggere på henvendelser og forhåndsvurderer søknader om kommunal bostøtte ut fra opplastede vedlegg. Trenger DPIA, ROS, EU AI Act-klassifisering og kostnadsestimat før beslutning. Alle 17 rapport-typer er pre-importert med eksempel-data.",
"scenarios": [
"Chatbot/agent",
"Beslutningsstøtte"

View file

@ -0,0 +1,31 @@
{
"generator": "tests/screenshot/run.mjs",
"dir": "playground/screenshots/v1.15.0",
"demoStateSha256": "f952333f8cc8471c1bf0bfa0e4aff638bdb81b5c1351e4e0b1ca0fea7f24969f",
"files": {
"01-onboarding-empty-dark.png": "258c8e1d71ee0ef91ca9b0521939bc7b8ed340f1d2a8b477760463d21314da95",
"01-onboarding-empty-light.png": "bc0ddc7c386f3eb5d7d9a25f225563d10d917ac263c6df9571a0a8f558b4ebb7",
"02-project-overview-dark.png": "dbd45d1b49d33d7483f0bf6e22419e5e6621aec2b7802e6d6880ecc4498a855a",
"02-project-overview-light.png": "c98f83ce1f01d7367e10bbc30a97152c27777af55f4df2c62819d808b1f1d001",
"03-project-artifact-classify-dark.png": "ab8255ca57624ee81e3790561403934dbd516463c8d3fb2a36aa8d7640492a95",
"03-project-artifact-classify-light.png": "268386ca08b5ec5f9a7bb83dab928b4d2f9268781f99e29e0020243fd3926bd0",
"04-project-artifact-security-dark.png": "1b3cbc8ddbf0fba6af5de559fdf8208eb4ffe909fe2775d60e52443f53cf3b57",
"04-project-artifact-security-light.png": "ed95d278bcf41ebf9377f7a7641b022a14550694feb08a3e03195a347634dd28",
"05-project-artifact-ros-dark.png": "7f2bde4833fa35d30b79bc57c847c172d2383cdcfe85bd061860b7b7020602f8",
"05-project-artifact-ros-light.png": "02721873b69e2a8fd6636b0b3229035fc89e4af6d04f087228c2e214355f8991",
"06-project-artifact-cost-dark.png": "c2516e500aa6eb6b81ec6c770d8a771de653d78ff533b77f0f2c9e6b8f48c2bc",
"06-project-artifact-cost-light.png": "54a5d7994f8b660819d6b1302a8cef5605bea505bc729076621975de5f26ae24",
"07-project-artifact-summary-dark.png": "513cc3e39e8ee5a9dfa8201d881799e7b5023f1eb6afb96a40be13d9833ab093",
"07-project-artifact-summary-light.png": "7ddea4ad5aed3b273323312fe68e767e160adedae937cda9030153ef6107d04d",
"08-project-import-modal-dark.png": "72dcf6748bbb5b8227fa2e105e420d04f53270c6a812746ccd33c946807c980e",
"08-project-import-modal-light.png": "6fb21d479c6d6e8da4c29e748e2d9611c266fc2577f01bf23248f795dcec5b39",
"09-project-search-dark.png": "76ad042f2fb1bd8f6c23d4c7088bcbd8f2cbeb116c31143823c7d1f243502ffa",
"09-project-search-light.png": "6ca20d2830775837858c242070836f45a17b2e58067daa82569d9985383a511d",
"10-home-dark.png": "c4180d9ef9c379e90759b4ec2f07e43f453e69aff1ef44ad696162f3455dafbd",
"10-home-light.png": "60c8907dfbfc3ac69797524bbe2fca2928379d15def16540436fe23b055fc117",
"11-catalog-dark.png": "7e211e14fbd6f1fcfe5eb895065675ccfe9d86f69f110d0c812123665bb2c891",
"11-catalog-light.png": "47439db2e9b941d9a9d6ade2244d63143c48abaeb619c779d1310dac597a6337",
"12-onboarding-prefilled-dark.png": "c443ae30e9f63d29f6153293b388bd6e6d9256ee414ddc3ab1f712a8af8a5c11",
"12-onboarding-prefilled-light.png": "bc0ddc7c386f3eb5d7d9a25f225563d10d917ac263c6df9571a0a8f558b4ebb7"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 825 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 824 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 377 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 815 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 814 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 963 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 961 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 KiB

After

Width:  |  Height:  |  Size: 245 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 620 KiB

After

Width:  |  Height:  |  Size: 627 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 616 KiB

After

Width:  |  Height:  |  Size: 622 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 879 KiB

After

Width:  |  Height:  |  Size: 894 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 872 KiB

After

Width:  |  Height:  |  Size: 885 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 960 KiB

After

Width:  |  Height:  |  Size: 961 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 954 KiB

After

Width:  |  Height:  |  Size: 954 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 863 KiB

After

Width:  |  Height:  |  Size: 871 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 857 KiB

After

Width:  |  Height:  |  Size: 864 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 744 KiB

After

Width:  |  Height:  |  Size: 748 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 739 KiB

After

Width:  |  Height:  |  Size: 742 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 816 KiB

After

Width:  |  Height:  |  Size: 810 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 809 KiB

After

Width:  |  Height:  |  Size: 802 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 KiB

After

Width:  |  Height:  |  Size: 272 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

After

Width:  |  Height:  |  Size: 268 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 594 KiB

After

Width:  |  Height:  |  Size: 600 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 588 KiB

After

Width:  |  Height:  |  Size: 593 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

After

Width:  |  Height:  |  Size: 216 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

After

Width:  |  Height:  |  Size: 214 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 KiB

After

Width:  |  Height:  |  Size: 417 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 KiB

After

Width:  |  Height:  |  Size: 414 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 KiB

After

Width:  |  Height:  |  Size: 247 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 KiB

After

Width:  |  Height:  |  Size: 245 KiB

Before After
Before After

Some files were not shown because too many files have changed in this diff Show more