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
5 changes: 5 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ jobs:
name: Build and Validate
runs-on: ubuntu-latest
env:
NODE_ENV: test
IS_NEXT_BUILD: "1"
SECRET_KEY: ci_secret_key_ideon
APP_PORT: ${{ vars.APP_PORT }}
Expand All @@ -49,6 +50,10 @@ jobs:
run: npm run check

- name: Run unit tests
env:
VITEST: "1"
SQLITE_PATH: ":memory:"
NODE_ENV: test
run: npm run test

- name: Build application
Expand Down
18 changes: 16 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
The Ideon project follows the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format
and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.7.6] - 2026-03-XX

### Added

- Added Ability to copy multiple blocks content by concatenating them in the order they were selected.
- Added ability to set the application's log level via environment variables.
- Added `Ctrl+E` and `Ctrl+P` note block shortcuts to switch between edit and preview modes while preserving inline code formatting and command palette conflicts.
- Added `Duplicate` option in the block context menu to quickly duplicate a block.

### Fixed

- Fixed blurry content when zooming out in the canvas.
- Fixed OIDC/SSO login lockout for invited or existing users when the provider returned `email_verified=false` [#62](https://github.com/3xpyth0n/ideon/issues/62).

## [0.7.5] - 2026-03-23

### Fixed
Expand All @@ -14,9 +28,9 @@ and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.7.4] - 2026-03-20

### Added
### Fixed

- Improved folder block styling [#61](https://github.com/3xpyth0n/ideon/issues/61).
- Fixed poor readability of folder cards in light mode dashboard view [#61](https://github.com/3xpyth0n/ideon/issues/61).

## [0.7.3] - 2026-03-19

Expand Down
45 changes: 23 additions & 22 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,41 @@ Thank you for your interest in contributing to Ideon! We appreciate your help in

## Getting Started

Ideon is designed to be easy to develop on. It supports two database modes depending on the environment:
Ideon uses a **Docker-standardized development environment** to ensure high-fidelity performance and consistency across all machines.

- **SQLite** (Development): Used automatically when running in dev mode. Zero setup required.
- **PostgreSQL** (Production): Used when running via Docker or `npm start`.
### Prerequisites

### Local Development (SQLite)
- **Docker** & **Docker Compose v2**
- **Node.js** (for running checks and tests locally)

This is the recommended way to work on the codebase. It uses a local SQLite file (`storage/dev.db`).
### Initial Setup

1. **Fork the repository** and clone it locally.
2. **Install dependencies**:
2. **Configure the environment**:
```bash
npm install
cp env.example .env
# Edit .env and ensure SECRET_KEY is set (e.g. using openssl rand -hex 32)
```
3. **Run the development server**:
3. **Install local dependencies** (required for IDE support and linting):
```bash
npm run dev
npm install
```
The app will be available at `http://localhost:3000`.

### Production Simulation (PostgreSQL)
### Running the Development Environment

If you need to test the production behavior or database migrations with Postgres:
The development server runs within Docker to guarantee production-like performance, especially for large spatial canvases.

1. **Configure the environment**:
```bash
npm run dev
```

```bash
cp env.example .env
# Edit .env and ensure SECRET_KEY is set (e.g. using openssl rand -hex 32)
```
This command will:

2. **Start the services**:
```bash
docker compose up -d
```
1. Build the Ideon container images.
2. Start the stack including the application and a **PostgreSQL** database.
3. The app will be available at `http://localhost:3000`.

_Note: Ideon runs in production mode within Docker for maximum performance. You must run `npm run dev` each time you want to apply your changes, as this will trigger a rebuild of the local container image._

## Development Workflow

Expand All @@ -49,6 +49,7 @@ If you need to test the production behavior or database migrations with Postgres
# Install pre-commit (if not already installed)
# macOS: brew install pre-commit
# Linux: sudo apt install pre-commit
# Arch: sudo pacman -S pre-commit

# Install the git hooks
pre-commit install
Expand Down Expand Up @@ -82,7 +83,7 @@ If you need to test the production behavior or database migrations with Postgres
- We use **Prettier** for formatting.
- We use **ESLint** for linting.
- Follow the existing naming conventions (camelCase for logic, PascalCase for components).
- **No inline styles** allowed (use CSS modules or global CSS).
- **No inline styles** allowed (use CSS files).
- **No hardcoded strings** in the UI (use i18n dictionaries).

## Adding a New Language
Expand Down
File renamed without changes.
52 changes: 52 additions & 0 deletions compose.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/bin/bash

# Define the base command using both production and dev override files
# This ensures we use the local build (from dev.yml) instead of the GHCR image
COMPOSE="docker compose -f docker-compose.yml -f docker-compose.dev.yml"

show_help() {
echo "Usage: ./compose.sh [command]"
echo ""
echo "Commands:"
echo " build Build the images"
echo " start Start the stack"
echo " restart Restart the stack"
echo " stop Stop the stack"
echo " down Stop and remove containers"
echo ""
}

# If no arguments provided, show help.
if [ -z "$1" ]; then
show_help
exit 1
fi

case "$1" in
start)
echo "Starting stack..."
$COMPOSE up -d
;;
restart)
echo "Restarting stack..."
$COMPOSE down
$COMPOSE up -d
;;
stop)
echo "Stopping stack..."
$COMPOSE stop
;;
down)
echo "Tearing down stack..."
$COMPOSE down
;;
build)
echo "Building stack..."
$COMPOSE build
;;
*)
echo "Error: Unknown command '$1'"
show_help
exit 1
;;
esac
3 changes: 3 additions & 0 deletions docker-compose.dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
services:
ideon-app:
build: .
14 changes: 7 additions & 7 deletions env.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ APP_URL=http://localhost:3000
# Canonical timezone for server logs ONLY
TIMEZONE=UTC

### Database
# Note: PostgreSQL variables are not required in "development" mode, SQLite is used automatically (storage/dev.db).
# Override SQLite path (optional)
SQLITE_PATH=./storage/dev.db
# Server log level. Defaults to `debug` when `NODE_ENV=test`, otherwise `info`.
# Options: debug|info|warn|error|fatal
LOG_LEVEL=info

# Public client log level. Only affects client-side logging and is bundled into the client.
# Options: debug|info|warn|error
NEXT_PUBLIC_LOG_LEVEL=error

# PostgreSQL host or service name (Docker Compose: ideon-db)
DB_HOST=ideon-db
Expand All @@ -37,9 +40,6 @@ DB_PASS=ideon
# Use a strong, random string (e.g., openssl rand -hex 32)
SECRET_KEY=

# Origin allowed during Next.js dev server
ALLOWED_DEV_ORIGIN=

### SMTP
# Sender email address
SMTP_FROM_EMAIL=
Expand Down
File renamed without changes.
Loading
Loading