v0.34.1

arkohut/pensievev0.34.1May 13, 2026by arkohut

AI Summary

Fixes database initialization crashes on fresh installs by reordering migration and seed steps.

Key Highlights

  • Fixes PostgreSQL and SQLite crashes due to missing `kind` column during seed
  • Reordered database steps: init -> migrations -> seed
  • Explicitly sets `kind=LibraryKind.RECORD` in default seed

New Features

  • Database initialization fix for fresh installs
  • Ordering of database initialization steps
  • Explicit library type seeding

Full Release Notes

## Bug Fixes

  - Fresh installs and existing v0.34.0 deployments fail to start `serve` because the ORM-based seed (default plugins / library) runs before alembic
  migrations by @arkohut
    - Once `LibraryModel` gained the `kind` column in v0.33.0, the seed's `SELECT` against `libraries` crashed before `run_migrations()` had a chance
  to add the column — on PostgreSQL with `UndefinedColumn: column libraries.kind does not exist`, and on SQLite with the equivalent `no such column`
  error
    - Split `DatabaseInitializer.init_database()` into schema-only setup plus a new `seed_default_data()` step, and reorder the three call sites
  (`serve` / `init` / `migrate_sqlite_to_pg`) to: `init_database → run_migrations → seed_default_data`
    - Set `kind=LibraryKind.RECORD` explicitly when seeding the default capture library, so fresh installs (where the migration's name-based UPDATE
  hits an empty table) still end up with the right kind instead of falling through to the `static` server default

  **Full Changelog**: https://github.com/arkohut/pensieve/compare/v0.34.0...v0.34.1

  ---

  ## Bug 修复

  - 修复全新安装以及已安装 v0.34.0 的实例无法启动 `serve` 的问题:ORM 默认数据 seed(默认插件 / library)在 alembic migration 之前运行 by @arkohut
    - v0.33.0 给 `LibraryModel` 加上 `kind` 列后,seed 阶段对 `libraries` 的 `SELECT` 在 `run_migrations()` 还没来得及添加该列时就崩溃 —— PostgreSQL
  上抛 `UndefinedColumn: column libraries.kind does not exist`,SQLite 上是等价的 `no such column` 错误
    - 把 `DatabaseInitializer.init_database()` 拆成仅建表的部分加新的 `seed_default_data()` 步骤,并把 `serve` / `init` / `migrate_sqlite_to_pg`
  三处调用点统一改为:`init_database → run_migrations → seed_default_data`
    - 在 seed 默认 capture library 时显式设置 `kind=LibraryKind.RECORD`,让全新安装(migration 的按名 UPDATE 命中空表)也能拿到正确的 kind,而不是落到
   `static` 的 server default

  **完整更新日志**: https://github.com/arkohut/pensieve/compare/v0.34.0...v0.34.1