Two bugs from the v0.4.2 rename sweep: - The lazy model import was rewritten to `from omnivoice.models.omnivoice import VoiceStudio`, a class the library does not export. ImportError is not ModuleNotFoundError, so the #564 source fallback never caught it and /generate 500'd on every default-engine request. The class keeps its library name — it is a checkpoint-referenced identifier, not branding. - alembic resolved a bare relative script_location against the process cwd, and the desktop shell launches the backend from frontend/src-tauri, so a pending migration killed startup. script_location and prepend_sys_path are now anchored with %(here)s, with path_separator = os so Windows drive letters and paths with spaces survive. alembic floor raised to >=1.16. Regression tests verified fail-before/pass-after for both.
58 lines
1.6 KiB
INI
58 lines
1.6 KiB
INI
# Alembic configuration for VoiceStudio.
|
|
# Run from anywhere: alembic -c <repo>/alembic.ini <command>
|
|
# Default commands:
|
|
# alembic upgrade head — apply all pending migrations
|
|
# alembic revision -m "…" — create a new migration
|
|
# alembic current — show current schema version
|
|
#
|
|
# DB URL is resolved dynamically from core.config (env aware).
|
|
# See backend/migrations/env.py.
|
|
|
|
[alembic]
|
|
# %(here)s = this file's directory. Alembic resolves bare relative paths
|
|
# against the process CWD, not the ini — and the app doesn't always start
|
|
# from the repo root (`tauri dev` runs the backend with
|
|
# cwd=frontend/src-tauri), which made startup migrations die with
|
|
# "Path doesn't exist: backend/migrations" the first time one was pending.
|
|
script_location = %(here)s/backend/migrations
|
|
prepend_sys_path = %(here)s/backend
|
|
# Split multi-path options on os.pathsep, not the legacy space/comma/colon
|
|
# set — a colon-split would shred "C:\..." absolute paths on Windows.
|
|
path_separator = os
|
|
# sqlalchemy.url is set programmatically in env.py — do NOT set it here.
|
|
sqlalchemy.url =
|
|
|
|
[loggers]
|
|
keys = root, sqlalchemy, alembic
|
|
|
|
[handlers]
|
|
keys = console
|
|
|
|
[formatters]
|
|
keys = generic
|
|
|
|
[logger_root]
|
|
level = WARN
|
|
handlers = console
|
|
qualname =
|
|
|
|
[logger_sqlalchemy]
|
|
level = WARN
|
|
handlers =
|
|
qualname = sqlalchemy.engine
|
|
|
|
[logger_alembic]
|
|
level = INFO
|
|
handlers =
|
|
qualname = alembic
|
|
|
|
[handler_console]
|
|
class = StreamHandler
|
|
args = (sys.stderr,)
|
|
level = NOTSET
|
|
formatter = generic
|
|
|
|
[formatter_generic]
|
|
format = %(levelname)-5.5s [%(name)s] %(message)s
|
|
datefmt = %H:%M:%S
|