Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,33 @@ file is the human-readable summary of what changed and why.

## Unreleased

### Desktop

- **The app icon is the CoDev mark** — the Dock, taskbar and installer icons
were still upstream's black "o" square (and the blueprint variants for the
dev/beta channels). They are now the brand-red "C" — the same glyph the
`codev --mini` splash badges with — on a white tile, generated for every size,
`.icns` and `.ico` from a single source of record
(`packages/desktop/icons/icon.svg`) by `bun ./scripts/generate-icons.ts`. The
macOS `.icns` and the Dock PNG use Apple's Big Sur grid (inset plus drop
shadow) so the icon sits correctly next to native apps; all three channels
ship the same mark for now.

### Desktop / Web UI

- **No wordmark on the new-session screen, and the composer is centred** — the
screen led with a large watermark of the product wordmark and anchored the prompt
box a quarter of the way down the pane to make room for it. The watermark is gone
and the prompt box now sits in the middle of the pane.

- **The banner wordmark reads "codev"** — the large wordmark on the home screen,
the error page and shared-session pages still spelled "opencode". It is now the
lowercase codev wordmark, drawn from the same pixel glyphs as the TUI banner and
the landing page: "co" in the brand navy on light themes and the theme foreground
on dark, "dev" always in the brand red, with no drop shadow. The new-session
watermark was rebranded the same way before being dropped, so it comes back
branded if it is ever reinstated.

## 1.18.4-8

### Agent
Expand Down
16 changes: 12 additions & 4 deletions DIVERGENCES.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,11 @@ from the squash message first, or use a plain merge.
| `packages/opencode/script/postinstall.mjs` | `base` prefix `opencode-` → `codev-code-`; source/target binary names `opencode`/`opencode.exe` → `codev`/`codev.exe` (matches build.ts's `bin/codev` and publish.ts's `bin/codev.exe` stub); temp-dir prefix and failure message rebranded | Install-time platform-binary fetch must match the published package and binary names. | Keep our prefix and binary names. |
| `packages/tui/src/logo.ts` | Pixel glyphs "open"+"code" → "co"+"dev"; added a `brand` export (`navy` `#19224c` / `red` `#ee0033`, the landing page's `--color-brand-navy`/`--color-brand-red`), a `wordmarkHalves` export (each row's "co" and "dev" halves with the shadow marks substituted to glyphs, so each half can take its own brand color), the composed `wordmark` (plain lines, built from `wordmarkHalves`) and `ansiWordmark` (bold, no shadow: "co" in the terminal's default foreground, "dev" in brand red truecolor) exports for CLI banners; added a `badge` export (the "c" of the wordmark — `logo.left` rows 1-3 sliced to the first glyph, with the `_` shadow-fill marks stripped to spaces so it renders as a flat outline) for the `--mini` splashes | Branded wordmark art; `ansiWordmark` feeds the CLI help banner and session epilogue. | Keep our glyphs + exports; take upstream's surrounding changes. |
| `packages/tui/src/component/logo.tsx` | Renders the lowercase codev wordmark from `wordmarkHalves` — one bold `<text>` per half, no per-char shadow cells — with "co" in `brand.navy` on light / `theme.text` on dark and "dev" in `brand.red`, instead of upstream's two-tone "open"+"code" | Banner is pixel-identical to the landing page wordmark (`codev-landing-page` `app/components/PixelWordmark.tsx`: `text-brand-navy dark:text-foreground` + `text-brand-red`), so the marketing site and the TUI read as one brand. Deliberately fixed brand colors rather than the theme's `secondary`, and no drop shadow — the landing wordmark has neither. | Keep our version wholesale. If upstream restructures the component, re-apply the two-half brand coloring rather than reverting to a theme color. |
| `packages/ui/src/components/logo.tsx`, `packages/ui/src/components/logo.css` | `Logo` renders the lowercase "codev" wordmark instead of upstream's "opencode": the `wordmarkHalves` pixel glyphs of `packages/tui/src/logo.ts` resolved to a 24x6 grid at one unit per pixel (viewBox `0 0 24 6`, was `0 0 234 42`), as two `<path>`s — `data-slot="logo-wordmark-co"` and `…-dev` — with no drop-shadow paths. Colors come from two custom properties defined in logo.css on `[data-component="logo-wordmark"]`: `--logo-wordmark-dev` is always brand red `#ee0033`, `--logo-wordmark-co` is brand navy `#19224c` on light and `var(--icon-strong-base)` on dark. The dark swap is declared three times — under `prefers-color-scheme: dark` for surfaces that never stamp a theme, then under both `[data-color-scheme="light"]` and `[data-color-scheme="dark"]` so the app's explicit choice (`packages/ui/src/theme/context.tsx` sets it on `<html>`) beats the OS preference in both directions. Brand hexes are literals, not theme tokens — same reasoning as the TUI component row. `Mark` and `Splash` (the square "o") are untouched. | The web/desktop banner is the same art the TUI home banner and the landing page wordmark draw, so every surface reads as one brand. | Keep our version wholesale. If upstream restructures the component, re-apply the two-half brand coloring rather than reverting to `--icon-*` tokens. |
| `packages/ui/src/v2/components/wordmark-v2.tsx` (+ fork-only `wordmark-v2.css`) | `WordmarkV2` — the watermark behind the v2 new-session composer (`packages/app/src/components/session/session-new-design-view.tsx`) — draws the codev wordmark from the same 24x6 pixel grid as `Logo` instead of upstream's 720x129 "opencode", as two `<path>`s (`data-slot="wordmark-v2-co"` / `…-dev`). Upstream's watermark treatment is kept verbatim: the `0.6` outer opacity and the alpha mask whose gradient fades the mark out over its bottom half (converted to the new viewBox: gradient `y1` 68/129 → 3.163/6). "co" keeps `fill="currentColor"` so it still follows the caller's `text-*` class; "dev" takes brand red `#ee0033`. Per-half opacities live in the new `wordmark-v2.css`, following the one-CSS-file-per-v2-component convention: `co` is `0.112` (upstream's own `0.16 × 0.7` nesting, flattened), `dev` is boosted to `0.224` on light and `0.336` on dark via `--wordmark-v2-dev-opacity`, declared under `prefers-color-scheme` and both `[data-color-scheme]` values like components/logo.css. The boost is deliberate and measured: at upstream's weight a saturated red composites to within a few levels of the grey "co" half against the dark background and the two-tone disappears entirely, while the same value already reads pink against the light one. | The component is currently **not rendered** — the new-session view drops it (see the row below) — but it stays rebranded and exported so reinstating the watermark does not bring the upstream mark back with it. | Keep our version wholesale, including the per-theme `dev` opacity. If upstream retunes the watermark opacities, re-derive the `dev` boost from the new base rather than adopting a single flat value. |
| `packages/app/src/components/session/session-new-design-view.tsx` | Drops the `WordmarkV2` watermark from the v2 new-session screen and centres the composer. Upstream absolutely positions the content block at `top-[25.375%]` to leave room for the wordmark above it; with the mark gone that offset just parks the composer high in an empty pane, so the outer element becomes `flex items-center justify-center` over `size-full` (carrying the `px-6` inset across) and the `mt-8` spacer under the wordmark goes away. | The wordmark reads as clutter on the desktop new-session screen; without it the pane should be balanced, not top-weighted. | Keep our centred layout. If upstream restyles this view, re-apply the drop + centring rather than restoring `top-[25.375%]`. Reinstating the watermark means restoring the offset too, or it will sit centred with the composer. |
| `packages/app/src/pages/home.tsx`, `packages/app/src/pages/error.tsx`, `packages/enterprise/src/routes/share/[shareID].tsx` | `Logo` width utilities retuned for the codev wordmark's 4:1 box (upstream's is 5.57:1): home `md:w-xl` → `md:w-104`, error `w-58.5` → `w-42`, share (both call sites) `w-58.5` → `w-42` | Each value is the width at which the new wordmark renders at exactly the height the upstream one did, so no surrounding layout shifts. | Keep our widths; take upstream's surrounding changes. Recompute rather than restore if upstream changes the size. |
| `packages/desktop/icons/{dev,beta,prod}/` (all PNGs, `icon.icns`, `icon.ico`, `dock.png`), `packages/desktop/icons/README.md` | Regenerated from the fork-only `packages/desktop/icons/icon.svg` by the fork-only `packages/desktop/scripts/generate-icons.ts`: the brand-red `#ee0033` CoDev "C" — the `--mini` splash badge glyph, at the VS Code extension icon's proportions (unit = 120/1024, mark 480x600 centered) — on a white tile, replacing upstream's black/blueprint "o" mark. All three channels are byte-identical for now (chosen deliberately over upstream's per-channel treatments); the generator still writes them separately so a channel can diverge later. `icon.icns` members and `dock.png` use the macOS Big Sur grid (824/1024 inset + drop shadow); Windows, Linux and Store assets stay full-bleed. README rewritten from the Tauri-CLI + Image2Icon recipe to the generator. The stale Tauri-era `android/` and `ios/` subfolders are left untouched — nothing in the Electron build reads them. | Closes the "desktop app icons need design assets" rebrand gap: the Dock/taskbar icon was still upstream's mark. | Keep our assets and README (binary: take ours wholesale). Regenerate via the script rather than hand-editing; if upstream adds an icon size, add it to `FLAT_PNGS`/`ICONSET` and rerun. |
| `packages/tui/src/theme/assets/codev.json` (new file), `packages/tui/src/theme/index.ts`, `packages/tui/src/context/theme.tsx` | Added the `codev` theme — upstream's `opencode.json` palette with `darkSecondary` → `#0891b2` (brand teal) — registered it in the theme index, and made it the default/fallback theme (`"opencode"` → `"codev"` in the store default, kv fallback, and load-failure fallbacks). `theme/assets/opencode.json` itself matches upstream again. | Brand accent lives in a fork-owned theme instead of edits to upstream's palette; the default theme carries the brand. | Keep our theme file, its index registration, and the fallback strings; when upstream changes the opencode palette, mirror it into `codev.json` (keeping our `darkSecondary`). |
| `packages/opencode/src/cli/ui.ts` | `wordmark`/`logo()` render the lowercase codev wordmark via `ansiWordmark` (bold, no shadow, "dev" in brand red on TTY) | Help banner matches the TUI home banner. | Keep our wordmark + logo(); take upstream's surrounding changes. |
| `packages/tui/src/util/presentation.ts` | `sessionEpilogue` returns only the one-line `Continue codev -s <id>` hint — dropped the `ansiWordmark` banner and the `Session <title>` line (and the now-unused `title` input) | The exit transcript (see the exit-transcript row) already prints the conversation on quit; the wordmark + title banner was redundant noise above the resume hint. | Keep the single Continue line; if upstream re-adds a banner/title here, keep it removed. |
Expand Down Expand Up @@ -196,10 +201,13 @@ from the squash message first, or use a plain merge.
crash dialogs in `main/windows.ts` — the fork doesn't ship the desktop app; revisit before
shipping it), `favicon-v3.ico` + `social-share.png` (binary formats we can't author well —
need design assets; note the docs site serves the upstream-branded `social-share.png` as its
`og:image`), desktop app icons (tracked sources in `packages/desktop/icons/{dev,beta,prod}/`,
copied to the gitignored `resources/icons` at build — need design assets), and the
`ai.opencode.desktop` appId / `opencode://` scheme (identity plumbing wired into
deep-link handling).
`og:image`), the OAuth callback pages (`packages/core/src/oauth/page.ts` — its `WORDMARK`
constant is a second copy of the opencode wordmark geometry, and the page's headline/message/
footnote strings and `<title>` all say "OpenCode"; the file asks to be kept in sync with
`packages/ui/src/components/logo.tsx`, which has since moved to the codev wordmark, so
rebranding it means the wordmark *and* the strings together or the page reads inconsistently),
and the `ai.opencode.desktop` appId / `opencode://` scheme (identity plumbing wired into
deep-link handling). Desktop app icons are no longer a gap — see the icons row in the table.
- **URLs**: links the app opens in the browser point at the fork — docs at
the base in `DOCS_URL` (`packages/codev-brand/src/index.ts`, base64-encoded —
the site is locale-routed and the Code docs live under `/code`; no trailing
Expand Down
17 changes: 9 additions & 8 deletions packages/app/src/components/session/session-new-design-view.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import type { JSX } from "solid-js"
import { WordmarkV2 } from "@opencode-ai/ui/v2/wordmark-v2"
import { NEW_SESSION_CONTENT_WIDTH } from "@/pages/session/new-session-layout"

// Fork: no wordmark watermark. Upstream anchors the composer at 25.375% from the
// top to leave room for a `WordmarkV2` above it; with the mark gone that offset
// just parks the composer high in an empty pane, so the content centers instead.
// `WordmarkV2` itself is still exported (and rebranded) if it is reinstated.
export function NewSessionDesignView(props: { children: JSX.Element }) {
return (
<div data-component="session-new-design" class="relative size-full overflow-hidden bg-v2-background-bg-deep ">
<div class="absolute inset-x-0 top-[25.375%] flex justify-center px-6">
<div class={NEW_SESSION_CONTENT_WIDTH}>
<WordmarkV2 class="h-auto w-full text-v2-background-bg-inverse" />
<div class="mt-8">{props.children}</div>
</div>
</div>
<div
data-component="session-new-design"
class="relative flex size-full items-center justify-center overflow-hidden bg-v2-background-bg-deep px-6"
>
<div class={NEW_SESSION_CONTENT_WIDTH}>{props.children}</div>
</div>
)
}
3 changes: 2 additions & 1 deletion packages/app/src/pages/error.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,8 @@ export const ErrorPage: Component<ErrorPageProps> = (props) => {
data-tauri-drag-region
>
<div class="w-2/3 max-w-3xl flex flex-col items-center justify-center gap-8">
<Logo class="w-58.5 opacity-12 shrink-0" />
{/* Fork: `w-42` keeps the codev wordmark's 4:1 box at upstream's 42px height. */}
<Logo class="w-42 opacity-12 shrink-0" />
<div class="flex flex-col items-center gap-2 text-center">
<h1 class="text-lg font-medium text-text-strong">{language.t("error.page.title")}</h1>
<p class="text-sm text-text-weak">{language.t(errorDescriptionKey(props.error))}</p>
Expand Down
4 changes: 3 additions & 1 deletion packages/app/src/pages/home.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1749,7 +1749,9 @@ export function LegacyHome() {

return (
<div class="mx-auto mt-55 w-full md:w-auto px-4">
<Logo class="md:w-xl opacity-12" />
{/* Fork: narrower than upstream's `md:w-xl` so the chunkier 24x6 codev
wordmark renders at the same height the 234x42 opencode one did. */}
<Logo class="md:w-104 opacity-12" />
<Button
size="large"
variant="ghost"
Expand Down
36 changes: 26 additions & 10 deletions packages/desktop/icons/README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@
# Tauri Icons
# App Icons

Here's the process I've been using to create icons:
`icon.svg` is the source of record: the brand-red CoDev "C" mark on a white tile.
Everything under `dev/`, `beta/` and `prod/` is generated from that geometry by

- Save source image as `app-icon.png` in `packages/desktop`
- `cd` to `packages/desktop`
- Run `bun tauri icon -o src-tauri/icons/{environment}`
- Use [Image2Icon](https://img2icnsapp.com/)'s 'Big Sur Icon' preset to generate an `icon.icns` file and place it in the appropriate icons folder
```sh
cd packages/desktop
bun ./scripts/generate-icons.ts
```

The Image2Icon step is necessary as the `icon.icns` generated by `app-icon.png` does not apply the shadow/padding expected by macOS,
so app icons appear larger than expected.
The three channels are currently identical — the same red C on white ships as the
dev, beta and prod icon. `generate-icons.ts` still writes each channel separately,
so giving a channel its own treatment later is a change to that script alone.

For unpackaged Electron on macOS, `app.dock.setIcon()` should use a PNG. Keep `dock.png` in each channel folder synced with the
extracted `icon_128x128@2x.png` from that channel's `icon.icns` so the dev Dock icon matches the packaged app inset.
The generator rasterizes, encodes the PNGs and builds the `.ico` itself, so the only
external tool it needs is `iconutil` for `.icns` — which means it has to run on macOS.
This replaces the old Tauri-CLI + [Image2Icon](https://img2icnsapp.com/) workflow;
the Big Sur inset and drop shadow that step used to add are now applied directly to
the `.icns` members and to `dock.png` (824/1024 rounded square), while the Windows,
Linux and Store assets stay full-bleed.

`dock.png` exists because unpackaged Electron on macOS sets its Dock icon from a PNG
via `app.dock.setIcon()` — it is the macOS-inset render, so the dev Dock icon matches
the packaged app.

`build` copies the channel folder to the gitignored `resources/icons` (see
`scripts/copy-icons.ts`), which is what `electron-builder.config.ts` points at.

The `android/` and `ios/` folders in each channel are leftovers from the Tauri era.
Nothing in the Electron build reads them and the generator does not touch them.
Binary file modified packages/desktop/icons/beta/128x128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/128x128@2x.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/64x64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/Square107x107Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/Square142x142Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/Square150x150Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/Square284x284Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/Square30x30Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/Square310x310Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/Square44x44Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/Square71x71Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/Square89x89Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/StoreLogo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/dock.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/beta/icon.icns
Binary file not shown.
Binary file modified packages/desktop/icons/beta/icon.ico
Binary file not shown.
Binary file modified packages/desktop/icons/beta/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/dev/128x128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/dev/128x128@2x.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/dev/32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/dev/64x64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/dev/Square107x107Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/dev/Square142x142Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/dev/Square150x150Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/dev/Square284x284Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/dev/Square30x30Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/desktop/icons/dev/Square310x310Logo.png
Binary file modified packages/desktop/icons/dev/Square44x44Logo.png
Binary file modified packages/desktop/icons/dev/Square71x71Logo.png
Binary file modified packages/desktop/icons/dev/Square89x89Logo.png
Binary file modified packages/desktop/icons/dev/StoreLogo.png
Binary file modified packages/desktop/icons/dev/dock.png
Binary file modified packages/desktop/icons/dev/icon.icns
Binary file not shown.
Binary file modified packages/desktop/icons/dev/icon.ico
Binary file not shown.
Binary file modified packages/desktop/icons/dev/icon.png
22 changes: 22 additions & 0 deletions packages/desktop/icons/icon.svg
Binary file modified packages/desktop/icons/prod/128x128.png
Binary file modified packages/desktop/icons/prod/128x128@2x.png
Binary file modified packages/desktop/icons/prod/32x32.png
Binary file modified packages/desktop/icons/prod/64x64.png
Binary file modified packages/desktop/icons/prod/Square107x107Logo.png
Binary file modified packages/desktop/icons/prod/Square142x142Logo.png
Binary file modified packages/desktop/icons/prod/Square150x150Logo.png
Binary file modified packages/desktop/icons/prod/Square284x284Logo.png
Binary file modified packages/desktop/icons/prod/Square30x30Logo.png
Binary file modified packages/desktop/icons/prod/Square310x310Logo.png
Binary file modified packages/desktop/icons/prod/Square44x44Logo.png
Binary file modified packages/desktop/icons/prod/Square71x71Logo.png
Binary file modified packages/desktop/icons/prod/Square89x89Logo.png
Binary file modified packages/desktop/icons/prod/StoreLogo.png
Binary file modified packages/desktop/icons/prod/dock.png
Binary file modified packages/desktop/icons/prod/icon.icns
Binary file not shown.
Binary file modified packages/desktop/icons/prod/icon.ico
Binary file not shown.
Binary file modified packages/desktop/icons/prod/icon.png
Loading
Loading