Compare commits

...

2 Commits
v0.9.1 ... main

Author SHA1 Message Date
Maksym Sadovnychyy
b3926e0fed (bugfix): hide the mouse pointer while the bubbles screen saver is showing 2026-11-03 20:24:00 +01:00
Maksym Sadovnychyy
171376f897 (feature): add full screen and an idle bubbles screen saver 2026-11-02 21:22:01 +01:00
207 changed files with 1099 additions and 79 deletions

View File

@ -6,6 +6,23 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
## [Unreleased] ## [Unreleased]
## [0.9.3] - 2026-11-03
### Fixed
- The mouse pointer is hidden while the bubbles screen saver is showing, and returns when the overlay is cleared.
## [0.9.2] - 2026-11-02
### Added
- **View -> Full screen** or **F11** fills the display; **Escape** leaves full screen. Full screen is not restored on the next launch.
- **Settings -> Screen saver** enables a bubbles overlay after idle minutes while full screen. The console stays readable under the bubbles. Any mouse or key press clears the overlay without leaving full screen.
### Changed
- AppStream screenshots stay on tag `v0.8.6`, where those images are stored. The `0.9.2` release entry points at this version's changelog.
## [0.9.1] - 2026-10-31 ## [0.9.1] - 2026-10-31
### Added ### Added
@ -64,7 +81,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
### Added ### Added
- When Settings → AI is on, Chat sits on the cluster overview beside Errors and Warnings. Analyze issues asks which objects are still failing and which events are leftover after the pods recovered. Those warnings and errors go with the question. - When Settings -> AI is on, Chat sits on the cluster overview beside Errors and Warnings. Analyze issues asks which objects are still failing and which events are leftover after the pods recovered. Those warnings and errors go with the question.
### Changed ### Changed
@ -133,8 +150,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
- The navigator adds admission policies, CSI objects, API services, flow schemas, priority levels, and dynamic resource allocation types. Custom resource tables use the CRD `additionalPrinterColumns`. - The navigator adds admission policies, CSI objects, API services, flow schemas, priority levels, and dynamic resource allocation types. Custom resource tables use the CRD `additionalPrinterColumns`.
- A list can send a label selector with the API request. - A list can send a label selector with the API request.
- YAML apply falls back to create or replace when the API server rejects an apply patch. - YAML apply falls back to create or replace when the API server rejects an apply patch.
- Settings → AI sets the local Ollama endpoint and model. Chat stays read-only unless the agent is enabled; restart, pod delete, scale, and apply then wait for a confirmation. - Settings -> AI sets the local Ollama endpoint and model. Chat stays read-only unless the agent is enabled; restart, pod delete, scale, and apply then wait for a confirmation.
- Help → About shows the product, license, and contact. - Help -> About shows the product, license, and contact.
### Fixed ### Fixed
@ -161,7 +178,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
### Added ### Added
- Help → Logs shows the app log and crash reports, and an unhandled error opens a copyable debug window instead of closing the app. - Help -> Logs shows the app log and crash reports, and an unhandled error opens a copyable debug window instead of closing the app.
- YAML view, volume files, and ConfigMap/Secret values highlight as JSON or YAML. A data key or file name uses its extension (`.json`, `.yaml`, `.yml`); a key without one stays plain. The resource YAML tab is always YAML. - YAML view, volume files, and ConfigMap/Secret values highlight as JSON or YAML. A data key or file name uses its extension (`.json`, `.yaml`, `.yml`); a key without one stays plain. The resource YAML tab is always YAML.
- Services table includes Status: Active when the load-balancer address is assigned, Pending when none is set, and Unreachable when a BGP or requested address is not the one in `status.loadBalancer.ingress` (or Cilium IPAM reports it unsatisfied). - Services table includes Status: Active when the load-balancer address is assigned, Pending when none is set, and Unreachable when a BGP or requested address is not the one in `status.loadBalancer.ingress` (or Cilium IPAM reports it unsatisfied).
@ -228,7 +245,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
- **Applications** table shows live **CPU** (% of cluster allocatable) and **Memory** (k8s `Mi`/`Gi`) from summed pod metrics when metrics-server is available. - **Applications** table shows live **CPU** (% of cluster allocatable) and **Memory** (k8s `Mi`/`Gi`) from summed pod metrics when metrics-server is available.
- **Deployments**, **StatefulSets**, and **DaemonSets** tables include **CPU** and **Memory** columns (millicores / `MiB`, summed from owned pods). - **Deployments**, **StatefulSets**, and **DaemonSets** tables include **CPU** and **Memory** columns (millicores / `MiB`, summed from owned pods).
- Applications metric **tooltips**: CPU in millicores; memory as `MiB` plus rounded `MB`. - Applications metric **tooltips**: CPU in millicores; memory as `MiB` plus rounded `MB`.
- Applications pod attribution matches instance labels, direct workload owners, and **ReplicaSet → Deployment** owners. - Applications pod attribution matches instance labels, direct workload owners, and **ReplicaSet -> Deployment** owners.
- Transient Kubernetes API errors (for example HTTP/2 `ResponseEnded`) retry automatically; the client uses HTTP/1.1 for list traffic. - Transient Kubernetes API errors (for example HTTP/2 `ResponseEnded`) retry automatically; the client uses HTTP/1.1 for list traffic.
### Changed ### Changed
@ -283,12 +300,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
- Status-bar messages for port-forward start, stop, restore, and failure. - Status-bar messages for port-forward start, stop, restore, and failure.
- Local / Remote labels on the port-forward bar so the two port fields are explicit. - Local / Remote labels on the port-forward bar so the two port fields are explicit.
- Rebind the host port of an existing forward from **Network → Port Forwarding** (Local field + Rebind). - Rebind the host port of an existing forward from **Network -> Port Forwarding** (Local field + Rebind).
- Double-click a live port-forward in **Network → Port Forwarding** to open `http://127.0.0.1:{local}` in the default browser. - Double-click a live port-forward in **Network -> Port Forwarding** to open `http://127.0.0.1:{local}` in the default browser.
### Changed ### Changed
- Active port-forwards are listed in **Network → Port Forwarding** (stop from the table). They are no longer shown in the status bar. - Active port-forwards are listed in **Network -> Port Forwarding** (stop from the table). They are no longer shown in the status bar.
- Resource table footer, YAML/Data edit bars, and workload limit apply buttons show only for a selected row that can use them. Empty toolbars are hidden. - Resource table footer, YAML/Data edit bars, and workload limit apply buttons show only for a selected row that can use them. Empty toolbars are hidden.
- Enabled port-forwards are saved in `appsettings.json` (`Configuration:PortForwards`) and restored when a cluster reconnects. - Enabled port-forwards are saved in `appsettings.json` (`Configuration:PortForwards`) and restored when a cluster reconnects.

View File

@ -62,7 +62,7 @@ Store listing copy:
### System requirements (Properties) ### System requirements (Properties)
Partner Center → **Properties** → **System requirements**. A blank cell stays unset. Minimum is what the Store may warn on; Recommended does not warn. Partner Center -> **Properties** -> **System requirements**. A blank cell stays unset. Minimum is what the Store may warn on; Recommended does not warn.
The app is a win-x64 desktop console (tables, YAML, terminal). It does not use a camera, microphone, radio, gamepad, or a specific GPU. The app is a win-x64 desktop console (tables, YAML, terminal). It does not use a camera, microphone, radio, gamepad, or a specific GPU.

View File

@ -11,7 +11,7 @@
- Your kubeconfig and its RBAC are the access path. Click a catalog row to connect that context in this app. The radio writes kubectl `current-context` for the command line. This app does not read that field. Several contexts can stay connected. - Your kubeconfig and its RBAC are the access path. Click a catalog row to connect that context in this app. The radio writes kubectl `current-context` for the command line. This app does not read that field. Several contexts can stay connected.
- Helm, Dapr, and Longhorn screens view and operate what is already installed. They do not install those systems. - Helm, Dapr, and Longhorn screens view and operate what is already installed. They do not install those systems.
- **Cloud…** adds Google, Azure, Amazon, Oracle, DigitalOcean, or IBM by running that provider's CLI. **S3 Browser** opens a Longhorn backup target. - **Cloud...** adds Google, Azure, Amazon, Oracle, DigitalOcean, or IBM by running that provider's CLI. **S3 Browser** opens a Longhorn backup target.
- Chat is optional local [Ollama](https://ollama.com). It is read-only by default. With changes allowed, each restart, pod delete, scale, and apply waits for Approve. - Chat is optional local [Ollama](https://ollama.com). It is read-only by default. With changes allowed, each restart, pod delete, scale, and apply waits for Approve.
- Windows, Linux, and macOS. [Apache 2.0](LICENSE.md). - Windows, Linux, and macOS. [Apache 2.0](LICENSE.md).
@ -48,28 +48,29 @@ If you find this project useful, please consider supporting its development:
Each line links to the screen notes in [docs/features.md](docs/features.md). Each line links to the screen notes in [docs/features.md](docs/features.md).
- [Cluster overview](docs/features.md#cluster-overview) — version, node count, CPU, memory, and pod charts, plus errors and warnings. - [Cluster overview](docs/features.md#cluster-overview) - version, node count, CPU, memory, and pod charts, plus errors and warnings.
- [Applications](docs/features.md#applications) — one row per app instance and namespace, with ready, CPU, and memory. - [Applications](docs/features.md#applications) - one row per app instance and namespace, with ready, CPU, and memory.
- [Pods](docs/features.md#pods) — logs, shell, attach, a debug container, and port-forward. - [Pods](docs/features.md#pods) - logs, shell, attach, a debug container, and port-forward.
- [Chat](docs/features.md#chat) — local Ollama on the overview or the selection. Read-only by default. - [Chat](docs/features.md#chat) - local Ollama on the overview or the selection. Read-only by default.
- [Volume files](docs/features.md#volume-files) — browse, edit, download, and upload files on a PV or claim. - [Full screen and screen saver](docs/features.md#full-screen-and-screen-saver) - F11 full screen, and optional idle bubbles while full screen.
- [Dapr](docs/features.md#dapr) — components, configurations, subscriptions, sidecars, and the control plane. - [Volume files](docs/features.md#volume-files) - browse, edit, download, and upload files on a PV or claim.
- [Port forwarding](docs/features.md#port-forwarding) — saved tunnels that restore on reconnect and open in the browser. - [Dapr](docs/features.md#dapr) - components, configurations, subscriptions, sidecars, and the control plane.
- [Connections](docs/features.md#connections) — the kubeconfig on disk, **Add…**, and **Cloud…** for six providers. - [Port forwarding](docs/features.md#port-forwarding) - saved tunnels that restore on reconnect and open in the browser.
- [Navigator](docs/features.md#navigator) — cluster through custom resources. Longhorn and CloudNativePG appear when those APIs are installed. - [Connections](docs/features.md#connections) - the kubeconfig on disk, **Add...**, and **Cloud...** for six providers.
- [Longhorn](docs/features.md#longhorn) — attach, detach, recurring jobs, backups, and S3 Browser. Does not install Longhorn. - [Navigator](docs/features.md#navigator) - cluster through custom resources. Longhorn and CloudNativePG appear when those APIs are installed.
- [Tables](docs/features.md#tables) — watch, search, label selector, and a footer action on the selection. - [Longhorn](docs/features.md#longhorn) - attach, detach, recurring jobs, backups, and S3 Browser. Does not install Longhorn.
- [YAML](docs/features.md#yaml) — view, apply, create, and delete. - [Tables](docs/features.md#tables) - watch, search, label selector, and a footer action on the selection.
- [Workloads](docs/features.md#workloads) — scale, restart, rollout, and a CronJob trigger. - [YAML](docs/features.md#yaml) - view, apply, create, and delete.
- [Nodes](docs/features.md#nodes) — cordon, uncordon, and drain, with a preview of which pods move. - [Workloads](docs/features.md#workloads) - scale, restart, rollout, and a CronJob trigger.
- [Config](docs/features.md#config) — ConfigMaps, Secrets, quotas, autoscaling, and admission. - [Nodes](docs/features.md#nodes) - cordon, uncordon, and drain, with a preview of which pods move.
- [Network](docs/features.md#network) — Services, ingress, and policies. A load balancer is Active, Pending, or Unreachable. - [Config](docs/features.md#config) - ConfigMaps, Secrets, quotas, autoscaling, and admission.
- [Storage](docs/features.md#storage) — resize a claim, change reclaim policy, and browse volume files. - [Network](docs/features.md#network) - Services, ingress, and policies. A load balancer is Active, Pending, or Unreachable.
- [Access](docs/features.md#access) — approve a certificate signing request, and create a ServiceAccount token shown once. - [Storage](docs/features.md#storage) - resize a claim, change reclaim policy, and browse volume files.
- [Custom resources](docs/features.md#custom-resources) — extra columns from the CRD. - [Access](docs/features.md#access) - approve a certificate signing request, and create a ServiceAccount token shown once.
- [Helm](docs/features.md#helm) — installed charts, revision history, and a values diff. Install and upgrade stay on the Helm CLI. - [Custom resources](docs/features.md#custom-resources) - extra columns from the CRD.
- [Metrics](docs/features.md#metrics) — CPU and memory from metrics-server. - [Helm](docs/features.md#helm) - installed charts, revision history, and a values diff. Install and upgrade stay on the Helm CLI.
- [Help](docs/features.md#help) — Hint on the kind, the app log, a copyable crash window, and What's New. - [Metrics](docs/features.md#metrics) - CPU and memory from metrics-server.
- [Help](docs/features.md#help) - Hint on the kind, the app log, a copyable crash window, and What's New.
## Requirements ## Requirements
@ -122,14 +123,17 @@ Operator layout, open clusters, port-forwards, and Chat settings are stored in `
| Key | Role | | Key | Role |
|-----|------| |-----|------|
| `AiEnabled` | Chat tab. Off until enabled under Settings → AI | | `AiEnabled` | Chat tab. Off until enabled under Settings -> AI |
| `AiAgentEnabled` | With chat on, restart, pod delete, scale, and apply run only after you approve each one | | `AiAgentEnabled` | With chat on, restart, pod delete, scale, and apply run only after you approve each one |
| `OllamaEndpoint` | Local Ollama API, default `http://127.0.0.1:11434` | | `OllamaEndpoint` | Local Ollama API, default `http://127.0.0.1:11434` |
| `OllamaModel` | Local Ollama model, default `qwen3:8b`. A larger model (`qwen3:14b`, `qwen3:32b`, `qwen3-coder:30b`) is a better fit once changes are allowed | | `OllamaModel` | Local Ollama model, default `qwen3:8b`. A larger model (`qwen3:14b`, `qwen3:32b`, `qwen3-coder:30b`) is a better fit once changes are allowed |
| `OllamaTimeoutSeconds` | How long one Chat reply may run, in seconds. Default 240. Settings → AI shows this as Timeout | | `OllamaTimeoutSeconds` | How long one Chat reply may run, in seconds. Default 240. Settings -> AI shows this as Timeout |
| `ScreenSaver` | Bubbles overlay while full screen is idle. `Enabled` (off by default) and `IdleMinutes` (default 5). Settings -> Screen saver |
| `PortForwards` | Enabled localhost forwards; restored on reconnect | | `PortForwards` | Enabled localhost forwards; restored on reconnect |
| `Layout` | Window, panes, last navigator item, per-cluster tables | | `Layout` | Window, panes, last navigator item, per-cluster tables |
**View -> Full screen** or **F11** fills the display. **Escape** leaves full screen. When the screen saver is on, idle only while full screen shows translucent bubbles over the live UI; the first mouse or key press clears the bubbles and keeps full screen. Full screen is not restored on the next launch.
Chat stays read-only until **Allow the assistant to change the cluster** is on. Those changes still wait for Approve. The model box accepts any local Ollama model; larger models handle restart, scale, delete, and apply more reliably than `qwen3:8b`. Chat stays read-only until **Allow the assistant to change the cluster** is on. Those changes still wait for Approve. The model box accepts any local Ollama model; larger models handle restart, scale, delete, and apply more reliably than `qwen3:8b`.
## FAQ ## FAQ
@ -141,13 +145,13 @@ Yes. It is a native desktop Kubernetes GUI (operator console) for Windows, Linux
Yes. `KUBECONFIG` or `~/.kube/config`. RBAC is whatever that identity already has. Clicking a catalog row connects that context in this app. The radio only writes kubectl `current-context` so your command line can use the same cluster. This app does not read that field. Yes. `KUBECONFIG` or `~/.kube/config`. RBAC is whatever that identity already has. Clicking a catalog row connects that context in this app. The radio only writes kubectl `current-context` so your command line can use the same cluster. This app does not read that field.
**Does Chat send cluster data to a cloud AI?** **Does Chat send cluster data to a cloud AI?**
No. Chat is optional [Ollama](https://ollama.com) on the same machine. The model is whatever you set under Settings → AI. By default the tools only read issues, YAML, logs, and events. Turn on **Allow the assistant to change the cluster** and the same chat can restart, delete a pod, scale, or apply YAML, each after you approve it. A larger local model is the better choice for that. No. Chat is optional [Ollama](https://ollama.com) on the same machine. The model is whatever you set under Settings -> AI. By default the tools only read issues, YAML, logs, and events. Turn on **Allow the assistant to change the cluster** and the same chat can restart, delete a pod, scale, or apply YAML, each after you approve it. A larger local model is the better choice for that.
**Can Flatpak run a cloud exec plugin?** **Can Flatpak run a cloud exec plugin?**
Yes. **Download CLI** installs gcloud, az, aws, oci, doctl, ibmcloud, or kubelogin into the app. The sandbox starts that copy, including the exec plugin a kubeconfig names. A CLI installed on the host is not visible inside the sandbox. A certificate or token needs no CLI. Yes. **Download CLI** installs gcloud, az, aws, oci, doctl, ibmcloud, or kubelogin into the app. The sandbox starts that copy, including the exec plugin a kubeconfig names. A CLI installed on the host is not visible inside the sandbox. A certificate or token needs no CLI.
**Does it have a Cloud window and an S3 browser?** **Does it have a Cloud window and an S3 browser?**
Yes. **Cloud…** adds Google, Azure, Amazon, Oracle, DigitalOcean, or IBM by running that provider's CLI, which writes the API server, certificate, and login. **S3 Browser**, under Longhorn, opens the default backup target and any other S3 targets. Yes. **Cloud...** adds Google, Azure, Amazon, Oracle, DigitalOcean, or IBM by running that provider's CLI, which writes the API server, certificate, and login. **S3 Browser**, under Longhorn, opens the default backup target and any other S3 targets.
**Can it install a cluster, Helm charts, Dapr, or Longhorn?** **Can it install a cluster, Helm charts, Dapr, or Longhorn?**
No. It talks to an existing Kubernetes API. Helm, Dapr, and Longhorn screens view and operate objects that are already there. They do not install those systems. Adding a Longhorn backup target writes that target and its credential secret. S3 Browser opens a target those credentials can already reach. No. It talks to an existing Kubernetes API. Helm, Dapr, and Longhorn screens view and operate objects that are already there. They do not install those systems. Adding a Longhorn backup target writes that target and its credential secret. S3 Browser opens a target those credentials can already reach.
@ -165,11 +169,11 @@ Or `dotnet test MaksIT.ClusterConsole.Tests` from `src/`. Tests use kubeconfig f
## Scope ## Scope
Desktop operator console for the Kubernetes API. Not a CLI, cluster installer, GitOps, or secret-management system. Helm, Dapr, and Longhorn screens view and operate objects already in the cluster. They do not install those systems. Adding a Longhorn backup target writes that target and its credential secret. **Cloud…** writes a kubeconfig context by running a provider CLI. **S3 Browser** opens a Longhorn backup target. Desktop operator console for the Kubernetes API. Not a CLI, cluster installer, GitOps, or secret-management system. Helm, Dapr, and Longhorn screens view and operate objects already in the cluster. They do not install those systems. Adding a Longhorn backup target writes that target and its credential secret. **Cloud...** writes a kubeconfig context by running a provider CLI. **S3 Browser** opens a Longhorn backup target.
## License ## License
Apache 2.0 — see [LICENSE.md](LICENSE.md). Apache 2.0 - see [LICENSE.md](LICENSE.md).
© Maksym Sadovnychyy (MAKS-IT) © Maksym Sadovnychyy (MAKS-IT)

View File

@ -2,6 +2,17 @@
Short notes shown in the app after an upgrade. The full history, including maintainer notes, is [CHANGELOG.md](CHANGELOG.md). Short notes shown in the app after an upgrade. The full history, including maintainer notes, is [CHANGELOG.md](CHANGELOG.md).
## [Unreleased]
## [0.9.3] - 2026-11-03
- The mouse pointer is hidden while the bubbles screen saver is showing.
## [0.9.2] - 2026-11-02
- View -> Full screen or F11 fills the display. Escape leaves full screen.
- Settings -> Screen saver can show translucent bubbles after idle while full screen, so the console stays visible on a wall display.
## [0.9.1] - 2026-10-31 ## [0.9.1] - 2026-10-31
- The cluster catalog can collapse to a Connections rail, the same way the details pane collapses. The choice is kept. - The cluster catalog can collapse to a Connections rail, the same way the details pane collapses. The choice is kept.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 KiB

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 KiB

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 KiB

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 158 KiB

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