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
47 changes: 43 additions & 4 deletions script/server
Original file line number Diff line number Diff line change
@@ -1,16 +1,55 @@
#!/usr/bin/env bash
# script/server: Start development server
#
# Usage:
# ./script/server # Start server in ephemeral mode (default)
# ./script/server --persistent # Start server in persistent mode (using storage/ directory)
# ./script/server -p # Alias for --persistent
#
# Environment variables:
# SUPERNOTE_PORT - Server port (default: 8080)
# SUPERNOTE_STORAGE_DIR - Custom storage directory (default: storage)
# SUPERNOTE_JWT_SECRET - Secret for signing JWT tokens

set -e

cd "$(dirname "$0")/.."

echo "==> Starting ephemeral server..."
# Source .env file if present
if [ -f .env ]; then
set -o allexport
source .env
set +o allexport
fi

PERSISTENT=false
PASSTHROUGH_ARGS=()

for arg in "$@"; do
case "$arg" in
-p|--persistent)
PERSISTENT=true
;;
*)
PASSTHROUGH_ARGS+=("$arg")
;;
esac
done

export SUPERNOTE_JWT_SECRET="${SUPERNOTE_JWT_SECRET:-supernote_dev_secret_key}"

if command -v uv >/dev/null 2>&1; then
uv run supernote serve --ephemeral "$@"
if [ "$PERSISTENT" = true ]; then
echo "==> Starting persistent server (using storage/)..."
if command -v uv >/dev/null 2>&1; then
uv run supernote serve "${PASSTHROUGH_ARGS[@]}"
else
supernote serve "${PASSTHROUGH_ARGS[@]}"
fi
else
supernote serve --ephemeral "$@"
echo "==> Starting ephemeral server..."
if command -v uv >/dev/null 2>&1; then
uv run supernote serve --ephemeral "${PASSTHROUGH_ARGS[@]}"
else
supernote serve --ephemeral "${PASSTHROUGH_ARGS[@]}"
fi
fi
2 changes: 1 addition & 1 deletion supernote/server/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ class ServerConfig(DataClassYAMLMixin):
Env Var: `SUPERNOTE_GEMINI_API_KEY`
"""

gemini_ocr_model: str = "gemini-3-flash-preview"
gemini_ocr_model: str = "gemini-3.6-flash"
"""Gemini model to use for OCR.

Env Var: `SUPERNOTE_GEMINI_OCR_MODEL`
Expand Down
4 changes: 1 addition & 3 deletions supernote/server/routes/extended.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,6 @@ async def handle_extended_ai_status(request: web.Request) -> web.Response:
"hasApiKey": has_api_key,
"ocrEnabled": has_api_key,
"vectorSearchEnabled": has_api_key,
"model": getattr(config, "gemini_model", "gemini-1.5-flash")
if config
else "gemini-1.5-flash",
"model": getattr(config, "gemini_ocr_model", None) if config else None,
}
)