Skip to content

Commit 526ffc0

Browse files
Merge pull request #107 from elek-io/change-name-to-desktop
Rename package from Client to Desktop
2 parents 0ee2377 + 26402b9 commit 526ffc0

18 files changed

Lines changed: 78 additions & 74 deletions

AGENTS.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
# AGENTS.md
22

3-
Guidance for AI agents and contributors working on `@elek-io/client`.
3+
Guidance for AI agents and contributors working on `@elek-io/desktop`.
44

55
`@elek-io/core` handles file IO and git version control for elek.io Projects, a headless, git-backed CMS. It is published as a TypeScript library with Node, Browser, Astro and CLI entry points.
66

7-
`@elek-io/client` uses `@elek-io/core` and provides a UI on top of that business logic, packaged with Electron as a cross-platform desktop application.
7+
`@elek-io/desktop` uses `@elek-io/core` and provides a UI on top of that business logic, packaged with Electron as a cross-platform desktop application.
88

99
## Documentation
1010

1111
Documentation is split by what you are working on:
1212

13-
- [`contributing/`](./contributing/) - contributor and design docs for the client: the Electron process architecture, the IPC security model, TanStack Query data loading, and the dynamic form system. Start at [`contributing/README.md`](./contributing/README.md). The client ships as a packaged desktop app, not an npm package, so these docs are never shipped and may link anywhere.
14-
- **Core's behavior** is documented inside the `@elek-io/core` package itself. After `pnpm install`, read it under [`node_modules/@elek-io/core/docs/`](./node_modules/@elek-io/core/docs/index.md) (content export, the local API, API client generation, fields, storage layout, and more). This is the reference for anything the client delegates to Core.
13+
- [`contributing/`](./contributing/) - contributor and design docs for the desktop app: the Electron process architecture, the IPC security model, TanStack Query data loading, and the dynamic form system. Start at [`contributing/README.md`](./contributing/README.md). The desktop app ships packaged, not as an npm package, so these docs are never shipped and may link anywhere.
14+
- **Core's behavior** is documented inside the `@elek-io/core` package itself. After `pnpm install`, read it under [`node_modules/@elek-io/core/docs/`](./node_modules/@elek-io/core/docs/index.md) (content export, the local API, API client generation, fields, storage layout, and more). This is the reference for anything the desktop app delegates to Core.
1515
- To **contribute to Core** itself, use the [`@elek-io/core` repository](https://github.com/elek-io/core). Core's own contributor docs are not part of its published package, so they live only there.
1616

1717
Two rules follow:
1818

19-
- **Read before you change.** Before working on an area, read its doc first so you change behavior on purpose, not by guesswork. For client behavior that is the matching doc in `contributing/`; for behavior that comes from Core, read Core's docs in the package.
20-
- **Write after you change.** When you change client behavior a user or contributor should know about, update the matching doc in `contributing/` in the same change. Changes to Core itself do not belong in this repo - make them in the separate [`@elek-io/core`](https://github.com/elek-io/core) repository and document them there.
19+
- **Read before you change.** Before working on an area, read its doc first so you change behavior on purpose, not by guesswork. For desktop app behavior that is the matching doc in `contributing/`; for behavior that comes from Core, read Core's docs in the package.
20+
- **Write after you change.** When you change desktop app behavior a user or contributor should know about, update the matching doc in `contributing/` in the same change. Changes to Core itself do not belong in this repo - make them in the separate [`@elek-io/core`](https://github.com/elek-io/core) repository and document them there.
2121

2222
## Commands
2323

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# @elek-io/client
1+
# @elek-io/desktop
22

33
## 0.3.4
44

README.md

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
# elek.io Client
1+
# elek.io Desktop
22

33
> A modern, offline-first content management system (CMS) and digital asset manager (DAM).
44
5-
[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/elek-io/client)
5+
[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/elek-io/desktop)
66

77
> [!IMPORTANT]
8-
> elek.io Client is under active development and not yet ready for production usage! Feel free to check it out and make suggestions.
8+
> elek.io Desktop is under active development and not yet ready for production usage! Feel free to check it out and make suggestions.
99
1010
### Motivation
1111

1212
Traditional CMS solutions like WordPress need to be installed on a server, leading to costs for hosting it 24/7, security vulnerabilities by exposing the server to the internet, and the need to maintain / keep the server, database and CMS up to date.
1313

14-
elek.io Client solves these problems by being an offline-first desktop application that works entirely on your local machine, with optional remote synchronization.
14+
elek.io Desktop solves these problems by being an offline-first desktop application that works entirely on your local machine, with optional remote synchronization.
1515

1616
### What Makes It Special
1717

@@ -27,22 +27,15 @@ elek.io Client solves these problems by being an offline-first desktop applicati
2727

2828
### Download
2929

30-
Download the latest version for your platform:
30+
Download the latest release for your platform:
3131

32-
- **Windows**: [Download installer](https://github.com/elek-io/client/releases)
33-
- **macOS**: [Download DMG](https://github.com/elek-io/client/releases)
34-
- **Linux**: Download [AppImage](https://github.com/elek-io/client/releases) / [Snap](https://github.com/elek-io/client/releases) / [DEB](https://github.com/elek-io/client/releases)
32+
- **Windows**: [Installer](https://github.com/elek-io/desktop/releases/latest/download/elek-io-desktop-setup.exe)
33+
- **macOS (Apple Silicon)**: [DMG](https://github.com/elek-io/desktop/releases/latest/download/elek-io-desktop-arm64.dmg)
34+
- **macOS (Intel)**: [DMG](https://github.com/elek-io/desktop/releases/latest/download/elek-io-desktop-x64.dmg)
35+
- **Linux**: [AppImage](https://github.com/elek-io/desktop/releases/latest/download/elek-io-desktop.AppImage) · [DEB](https://github.com/elek-io/desktop/releases/latest/download/elek-io-desktop.deb) · [RPM](https://github.com/elek-io/desktop/releases/latest/download/elek-io-desktop.rpm) · [pacman](https://github.com/elek-io/desktop/releases/latest/download/elek-io-desktop.pacman)
3536

36-
### System Requirements
37-
38-
Although elek.io Client might run on older hard and software than listed below, the following is the recommended minimum:
39-
40-
- **Windows**: Windows 10 or later
41-
- **macOS**: macOS 13.7.6 (Ventura) or later
42-
- **Linux**: Ubuntu 22.04.5, or equivalent
43-
- **RAM**: 4 GB minimum, 8 GB recommended
44-
- **Disk Space**: 500 MB for elek.io Client + space for your Projects
37+
Each link resolves to the newest published release. For older versions and checksums, see the [releases page](https://github.com/elek-io/desktop/releases).
4538

4639
## For Developers
4740

48-
For insight on how elek.io Client works, please refer to the [contributing folder](contributing/README.md).
41+
For insight on how elek.io Desktop works, please refer to the [contributing folder](contributing/README.md).

contributing/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Developer Documentation
22

3-
Welcome to the elek.io Client developer documentation. This guide will help you understand the codebase architecture and development patterns.
3+
Welcome to the elek.io Desktop developer documentation. This guide will help you understand the codebase architecture and development patterns.
44

55
> [!NOTE]
6-
> This folder documents how to **contribute to** elek.io Client. If instead you want to consume your Projects' content inside your own applications, see the [@elek-io/core documentation](https://github.com/elek-io/core). Core ships its full guides (content export, local API, API client generation) both in its repository and in the package's `docs` folder.
6+
> This folder documents how to **contribute to** elek.io Desktop. If instead you want to consume your Projects' content inside your own applications, see the [@elek-io/core documentation](https://github.com/elek-io/core). Core ships its full guides (content export, local API, API client generation) both in its repository and in the package's `docs` folder.
77
88
## Prerequisites
99

@@ -29,7 +29,7 @@ Then proceed to the specific topics based on your interests or contribution goal
2929
- **[E2E Testing](./testing.md)** - Playwright tests against the packaged app, fixtures, isolation, and CI
3030
- **[Releasing](./releasing.md)** - versioning with changesets and how CD publishes draft GitHub Releases
3131

32-
For a running list of things Core supports but the client cannot use yet, see **[Not Yet Implemented](./not-yet-implemented.md)**. Add to it whenever you find such a gap.
32+
For a running list of things Core supports but the desktop app cannot use yet, see **[Not Yet Implemented](./not-yet-implemented.md)**. Add to it whenever you find such a gap.
3333

3434
## Contributing
3535

contributing/overview.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Introduction
44

5-
elek.io Client is built on [Electron](https://www.electronjs.org/) to create a cross-platform desktop application with web technologies (TypeScript, React).
5+
elek.io Desktop is built on [Electron](https://www.electronjs.org/) to create a cross-platform desktop application with web technologies (TypeScript, React).
66

77
> [!NOTE]
88
> By choosing Electron, we keep the languages (everything is mainly TypeScript) used throughout our repositories to a minimum and the knowledge barrier for potential contributors low. Although applications build e.g. with [Tauri](https://tauri.app/) do have a smaller bundle size and memory footprint, adding another language (Rust) would increase complexity for contributors by alot.
@@ -31,7 +31,7 @@ Electron applications consist of three main layers: the Main Process, the Preloa
3131
3232
```
3333

34-
While elek.io Client provides the user interface in a desktop application, all core functionalities related to file I/O, content handling, Git operations, local read-only API hosting and CLI usage are encapsulated in the separate [@elek-io/core](https://github.com/elek-io/core) library.
34+
While elek.io Desktop provides the user interface in a desktop application, all core functionalities related to file I/O, content handling, Git operations, local read-only API hosting and CLI usage are encapsulated in the separate [@elek-io/core](https://github.com/elek-io/core) library.
3535

3636
@elek-io/core is used by the Main Process, since only it has access to the filesystem and Node.js APIs - the Renderer Process is sandboxed for security reasons.
3737

@@ -169,7 +169,7 @@ When adding a new global provider, decide which level it belongs to. Anything th
169169

170170
### Security
171171

172-
Handling user content that is distributed and could potentially be malicious within an app that has access to the file system, strict security is necessary. elek.io Client follows [Electron's security best practices](https://www.electronjs.org/docs/latest/tutorial/security) to create strong isolation boundaries.
172+
Handling user content that is distributed and could potentially be malicious within an app that has access to the file system, strict security is necessary. elek.io Desktop follows [Electron's security best practices](https://www.electronjs.org/docs/latest/tutorial/security) to create strong isolation boundaries.
173173

174174
The Renderer Process can only communicate with the Main Process via a controlled IPC API exposed through the Preload Script. This ensures that untrusted code running in the Renderer Process (e.g., third-party libraries or user content) cannot directly access Node.js APIs or the filesystem.
175175

@@ -191,7 +191,7 @@ A Content Security Policy is enforced via a `<meta>` tag in the `src/renderer/in
191191

192192
#### External Content Restrictions
193193

194-
Some links to elek.io domains and loading of content are allowed in elek.io Client. To prevent abuse and potential security risks, the following restrictions are in place:
194+
Some links to elek.io domains and loading of content are allowed in elek.io Desktop. To prevent abuse and potential security risks, the following restrictions are in place:
195195

196196
**URL Whitelisting**:
197197

@@ -205,7 +205,7 @@ All external requests (e.g., when a user clicks a link inside the renderer or an
205205

206206
See `allowedHostnamesToLoadExternal` in [`src/main/index.ts:41-47`](/src/main/index.ts) for the implementation.
207207

208-
Links to whitelisted external hostnames are opened in the default system browser, not within an elek.io Client renderer window.
208+
Links to whitelisted external hostnames are opened in the default system browser, not within an elek.io Desktop renderer window.
209209

210210
A separate whitelist, `allowedHostnamesToLoadInternal`, controls in-window navigation: a `will-navigate` handler blocks any navigation whose origin is not on it. This list is empty in production and only holds the Vite dev server URL in development, so navigating the renderer window away from the app is effectively disabled in production. Note the external list is matched against the URL's `hostname`, while the internal list is matched against its `origin`.
211211

contributing/renderer/loading-and-updating-data.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Overview
44

5-
elek.io Client uses [TanStack Query](https://tanstack.com/query/latest) (formerly React Query) for all data fetching and mutations. This provides a consistent, type-safe way to interact with the main process via IPC, with built-in caching, loading states, and error handling.
5+
elek.io Desktop uses [TanStack Query](https://tanstack.com/query/latest) (formerly React Query) for all data fetching and mutations. This provides a consistent, type-safe way to interact with the main process via IPC, with built-in caching, loading states, and error handling.
66

77
## Configuration
88

@@ -463,7 +463,7 @@ Mutations already have `onSuccess` handlers that update the necessary caches. Us
463463

464464
## Error Handling
465465

466-
The client handles errors in three layers:
466+
The desktop app handles errors in three layers:
467467

468468
1. **Route error boundaries** - the root `ErrorComponent` in [`routes/__root.tsx`](../../src/renderer/routes/__root.tsx) catches all unhandled errors, logs them to the Core logger, and shows a friendly error page with a way back to the projects list. Sentry capture for React errors is wired separately, via Sentry's `reactErrorHandler` passed to `ReactDOM.createRoot` in [`app.tsx`](../../src/renderer/app.tsx) (Sentry itself is initialized in [`index.ts`](../../src/renderer/index.ts)).
469469
2. **Query and mutation errors** - `throwOnError: true` is set by default (via `useQueryNoError` and `customMutationOptions`), so query errors bubble to the nearest error boundary and mutation failures additionally show a toast through the global handler.

contributing/renderer/routing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Overview
44

5-
elek.io Client uses [TanStack Router](https://tanstack.com/router/latest) with file-based routing. Routes live in [`src/renderer/routes/`](../../src/renderer/routes/) and the route tree is auto-generated into `routeTree.gen.ts` by the TanStack Router plugin (configured in `electron.vite.config.ts`) - never edit that file by hand.
5+
elek.io Desktop uses [TanStack Router](https://tanstack.com/router/latest) with file-based routing. Routes live in [`src/renderer/routes/`](../../src/renderer/routes/) and the route tree is auto-generated into `routeTree.gen.ts` by the TanStack Router plugin (configured in `electron.vite.config.ts`) - never edit that file by hand.
66

77
**Key settings:**
88

electron-builder.yml

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
appId: io.elek.client
2-
productName: 'elek.io Client'
1+
appId: io.elek.desktop
2+
productName: 'elek.io Desktop'
33
directories:
44
buildResources: build
55
files:
@@ -18,19 +18,22 @@ files:
1818
- '!{AGENTS.md,CLAUDE.md,components.json,eslint.config.mjs,.node-version}'
1919
- '!{playwright.config.ts,pnpm-workspace.yaml,.prettierrc.json}'
2020
extraMetadata:
21-
name: 'elek-io-client' # Overwrites package.json name, since it cannot handle special characters
21+
name: 'elek-io-desktop' # Overwrites package.json name, since it cannot handle special characters
2222
asarUnpack:
2323
- resources/**
2424
win:
25-
executableName: 'elek.io Client'
25+
executableName: 'elek.io Desktop'
2626
nsis:
27-
artifactName: elek-io-client-${version}-setup.${ext}
27+
# No version in the name so github.com/.../releases/latest/download/<file> stays
28+
# a stable link. Trade-off: Windows differential updates fall back to a full
29+
# download, since electron-updater derives the old blockmap URL by version.
30+
artifactName: elek-io-desktop-setup.${ext}
2831
shortcutName: ${productName}
2932
uninstallDisplayName: ${productName}
3033
createDesktopShortcut: always
3134
mac:
3235
# Include the arch so Intel and ARM artifacts do not overwrite each other in the shared release
33-
artifactName: elek-io-client-${version}-${arch}.${ext}
36+
artifactName: elek-io-desktop-${arch}.${ext}
3437
entitlementsInherit: build/entitlements.mac.plist
3538
extendInfo:
3639
- NSCameraUsageDescription: Application requests access to the device's camera.
@@ -48,7 +51,7 @@ mac:
4851
releaseType: draft
4952
channel: latest-${arch}
5053
dmg:
51-
artifactName: elek-io-client-${version}-${arch}.${ext}
54+
artifactName: elek-io-desktop-${arch}.${ext}
5255
linux:
5356
# All four targets are auto-updatable via electron-updater (AppImage, deb,
5457
# rpm, pacman), so each one keeps in-app updates working. snap is
@@ -60,8 +63,16 @@ linux:
6063
- rpm
6164
- pacman
6265
category: Office
66+
# Linux builds are x64 only (see the CI matrix), so version-less and arch-less
67+
# names are unambiguous and keep the latest-download links stable.
6368
appImage:
64-
artifactName: elek-io-client-${version}.${ext}
69+
artifactName: elek-io-desktop.${ext}
70+
deb:
71+
artifactName: elek-io-desktop.${ext}
72+
rpm:
73+
artifactName: elek-io-desktop.${ext}
74+
pacman:
75+
artifactName: elek-io-desktop.${ext}
6576
npmRebuild: false
6677
# The CD workflow pre-creates one draft GitHub Release per version. Each runner
6778
# uploads its installers and update metadata into that shared draft, which

electron.vite.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export default defineConfig({
1212
plugins: [
1313
sentryVitePlugin({
1414
org: 'elek-io',
15-
project: 'client',
15+
project: 'desktop',
1616
}),
1717
],
1818
},

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
2-
"name": "@elek-io/client",
3-
"productName": "elek.io Client",
4-
"description": "The elek.io Client is a desktop application for Windows, macOS and Linux that allows you to manage content.",
2+
"name": "@elek-io/desktop",
3+
"productName": "elek.io Desktop",
4+
"description": "The elek.io Desktop is a desktop application for Windows, macOS and Linux that allows you to manage content.",
55
"version": "0.3.4",
66
"type": "module",
77
"main": "./out/main/index.js",
88
"homepage": "https://elek.io",
9-
"repository": "https://github.com/elek-io/client",
9+
"repository": "https://github.com/elek-io/desktop",
1010
"bugs": {
11-
"url": "https://github.com/elek-io/client/issues"
11+
"url": "https://github.com/elek-io/desktop/issues"
1212
},
1313
"author": {
1414
"name": "elek.io",

0 commit comments

Comments
 (0)