8000 Release v0.2.0 · colanode/colanode · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

v0.2.0

Compare
Choose a tag to compare
@github-actions github-actions released this 12 Jun 11:41
· 32 commits to main since this release
574f617

Highlights

This release contains breaking changes affecting communication between clients (Desktop & Web) and the Server. All self-hosted users must upgrade their server to the latest version to continue using Colanode. Data on your server will remain unaffected. Desktop app users will be prompted to log in again. See the migration guide below for more details.

Local-first Web Version

We have introduced the Web version of Colanode, a local-first and offline-ready client built with architecture similar to our desktop app. It leverages browser-based technologies such as OPFS (Origin Private File System) and SQLite-wasm to store data locally, synchronizing with the server when connected. Like the desktop app, the web client supports multiple accounts and connections to different servers. Due to browser constraints, main operations are handled within worker threads, mirroring Electron’s main process. Most desktop app implementations have been reused, with only a few custom abstractions added specifically for file system interactions and SQLite communication via Kysely.

File Handling via the API

We have deprecated S3 pre-signed URLs for file uploads and downloads. All file operations now occur through the server API, addressing several issues:

  1. CORS Challenges: Using the server API simplifies configuration by reducing CORS setup to a single configuration point.
  2. Compatibility Issues: Providers like Cloudflare R2 encountered authorization problems with pre-signed URLs using recent AWS S3 libraries.
  3. Enhanced Flexibility: Abstracting file handling via the API simplifies future integrations with alternative storage providers such as Azure or Google Cloud Platform.

Additionally, avatar and file storage have been consolidated into one configuration, simplifying setup and reducing redundancy.

API and Socket Changes

We have made significant updates to client-server communication protocols (both API and WebSockets) to resolve discrepancies between web and desktop (Node.js) environments. These updates also include general improvements and cleanups from previous implementations.

Connecting to Insecure Servers

The process for adding custom servers has been enhanced. Previously, users could not connect via insecure (HTTP) protocols unless using 'localhost'. Now, self-hosted server configurations are easier, simply copy the configuration link from your server’s root page into the client to establish a connection, regardless of the protocol or hostname.

Custom Path Prefix

You can now specify a custom path prefix if you're self-hosting Colanode behind an API gateway. Set the environment variable SERVER_PATH_PREFIX to automatically apply this prefix to all URLs.

# Optional custom path prefix for the server.
# Specify as plain text without slashes. Example:
# 'colanode' changes 'https://localhost:3000/config' to 'https://localhost:3000/colanode/config'
# SERVER_PATH_PREFIX: 'colanode'

Framework and Library Upgrades

We have upgraded key dependencies to enhance performance and developer productivity:

  • React: Version 19
  • Tailwind CSS: Version 4
  • Zod: Version 4

Both web and desktop clients utilize the same UI components.

Migration Guide

Remove all avatar storage configurations as these are no longer used:

# Delete these configurations:
S3_AVATARS_ENDPOINT: 'http://minio:9000'
S3_AVATARS_ACCESS_KEY: 'minioadmin'
S3_AVATARS_SECRET_KEY: 'your_minio_password'
S3_AVATARS_BUCKET_NAME: 'colanode-avatars'
S3_AVATARS_REGION: 'us-east-1'

Update the file storage configuration variable names:

# Before:
S3_FILES_ENDPOINT: 'http://minio:9000'
S3_FILES_ACCESS_KEY: 'minioadmin'
S3_FILES_SECRET_KEY: 'your_minio_password'
S3_FILES_BUCKET_NAME: 'colanode'
S3_FILES_REGION: 'us-east-1'

# After:
STORAGE_S3_ENDPOINT: 'http://minio:9000'
STORAGE_S3_ACCESS_KEY: 'minioadmin'
STORAGE_S3_SECRET_KEY: 'your_minio_password'
STORAGE_S3_BUCKET: 'colanode'
STORAGE_S3_REGION: 'us-east-1'

If you previously used separate buckets for avatars and files, ensure you migrate avatar files into your main files bucket, maintaining their original paths.

If you plan to use the web app, ensure your CORS configuration includes the relevant origin:

# Optional CORS Configuration. Default origin is 'https://app.colanode.com'.
# Specify multiple origins using commas or '*' to allow all origins.
# SERVER_CORS_ORIGIN: 'https://app.colanode.com'
# SERVER_CORS_MAX_AGE: '7200'

What's Changed

New Contributors

Full Changelog: v0.1.6...v0.2.0

0