Skip to content

Suprnova v4.2.0

Choose a tag to compare

@eas4ai eas4ai released this 17 Oct 00:23
· 601 commits to main since this release

Added

  • Model search. Searchable and the typed Model::search builder provide
    native database, Qdrant, collection and null engines, filters, facets,
    highlights, scopes and generation rebuilds. Hybrid search uses fastembed
    or OpenAI-compatible HTTP embeddings, with EmbeddingGemma 2 as the default
    local model. Opt-in analytics, query suggestions, JSON search and click
    routes, the Live search-box, the kits' notes search and a judged relevance
    and latency baseline complete the search surface.
  • Starter recommendations. Recommend records immutable, deduplicated
    events and reads scoped collaborative recommendations with affinity,
    popularity and recent-document fallbacks. Completed runs carry projected
    explanations, metrics and event provenance; commands generate snapshots,
    report status and apply application-owned retention.
  • Opt-in local search inference. The search-fastembed feature enables
    local embeddings, sparse models and reranking. It is off by default; its
    ort build script downloads ONNX Runtime at compile time. The default
    search build downloads nothing.
  • pgvector driver. PgVectorDriver joins the vector drivers behind the
    vector-pgvector default feature: a Postgres application stores and
    searches embeddings in its own database.
  • Search pages in RenderCache. A search on a cached route is stored like
    any other render and goes stale when one of its indexes changes: a document
    write or removal, a generation switch or a settings sync. Viewer-scoped and
    analytics searches are never stored, and without_render_cache() keeps one
    search out of the cache.

Fixed

  • Head::canonical() keeps a // request path on the app's origin (#155).
    A request for //evil.example/x gave a canonical link to another host. The
    head now takes the request URL as url::current builds it,
    https://example.com//evil.example/x, under the public root.
  • Inertia kits paint styled under the Vite dev server (#153). The kits
    list src/app.css as its own Vite entry, so the first server-rendered page
    loads it as a <link> with the request's nonce instead of waiting for the
    entry's JavaScript. main.ts and main.tsx no longer import it. In an
    existing application, add .entry_points(["src/app.css"]) to its
    InertiaConfig, add 'src/app.css' to the Vite build input, and remove
    the import.
  • The CLI installs on macOS without warnings (#152). The browser
    certificate store helpers that only the Linux install path uses are now
    compiled on Linux only.
  • Public responses no longer carry the session or XSRF-TOKEN cookie
    (#154).
    A response marked Cache-Control: public or given an s-maxage
    could be stored by a CDN or caching proxy with its Set-Cookie lines and
    replayed to other visitors. The session and CSRF middleware now leave off
    the cookies the reader already holds; a public response that must deliver a
    cookie, such as a new session or a rotated remember-me cookie, goes out
    private, no-store instead.
  • The reset email greets the user by name under Magnetar.
    PasswordReset::send_link now looks the account up and greets its name, as
    the verification and password-changed emails do. A failed lookup sends the
    plain greeting and logs a warning.