Skip to content

chore: release v0.1.2#14

Closed
intjiraya wants to merge 2 commits into
mainfrom
release-plz-2026-05-25T14-41-43Z
Closed

chore: release v0.1.2#14
intjiraya wants to merge 2 commits into
mainfrom
release-plz-2026-05-25T14-41-43Z

Conversation

@intjiraya

@intjiraya intjiraya commented May 25, 2026

Copy link
Copy Markdown
Owner

🤖 New release

  • constellation: 0.1.1 -> 0.1.2 (✓ API compatible changes)
Changelog

0.1.2 - 2026-05-25

Added

  • (search) full-text search, DSL, DNS-rebinding hardening, split rebuild

Documentation

  • (packaging) document automated AUR flow, drop manual-flow emphasis


This PR was generated with release-plz.

Copilot AI review requested due to automatic review settings May 25, 2026 14:41

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Prepares the constellation crate for the v0.1.2 release by bumping the crate version and recording the release notes in the changelog.

Changes:

  • Add 0.1.2 release entry to CHANGELOG.md.
  • Bump crate version to 0.1.2 in Cargo.toml.
  • Update the constellation package version in Cargo.lock.

Reviewed changes

Copilot reviewed 2 out of 3 changed files in this pull request and generated no comments.

File Description
CHANGELOG.md Adds the v0.1.2 release notes entry.
Cargo.toml Updates crate version from 0.1.1 to 0.1.2.
Cargo.lock Updates the locked package version for constellation to 0.1.2.

@intjiraya intjiraya force-pushed the release-plz-2026-05-25T14-41-43Z branch from 918cd1c to 3906c43 Compare May 25, 2026 14:43
intjiraya and others added 2 commits May 25, 2026 22:27
…ebuild

Server
- New `/api/search?q=...&limit=N` backed by an inverted index built at
  rebuild time. Lazy suffix-array (OnceLock) gives O(log V·L + matches)
  substring lookup ("auth" matches "authentication" via suffix lookup).
- Split rebuild into two phases: metadata-only (projects + by_session_id
  published immediately) then a parallel background pass that parses every
  session body and populates the search index. `is_indexing_search` exposed
  on /api/stats so the UI can render the in-between state.
- `parse_session_bodies_parallel` uses `std::thread::scope` with
  `available_parallelism()` workers — no new dependency.
- Search handler clones `Arc<SearchIndex>` under the RwLock, drops the
  guard, and runs in `spawn_blocking`. Concurrent reindex no longer waits
  for in-flight searches.
- `IndexedDoc` pre-computes lowercased char vector so `build_snippets` no
  longer allocates two `Vec<char>` per call.
- `Session::indexable_text()` (was `search::extract_session_text`) — text
  policy now lives with the parser domain model.

Security
- DNS-rebinding hardening: all `/api/*` routes require a loopback `Host`
  header; if `Origin` is present, it must also be loopback. WS routes keep
  their existing Origin check.
- Search query string no longer recorded in tracing spans (only
  `term_count`) to avoid leaking secrets typed as queries.

Client
- DSL in the search bar: multi-term AND, quoted phrases, operators
  `project:`, `model:`, `has:tool|cache|model`, `before:YYYY-MM-DD`,
  `after:YYYY-MM-DD`. Lives in `static/search.mjs` as pure functions
  (`tokenize`, `parseQuery`, `matches`, `highlight`, `highlightSegments`,
  `segmentsFromRanges`, `escapeHtml`).
- `applySearchFilter` is now hybrid: operators filter locally, plain terms
  hit `/api/search`, server snippet ranges drive highlighting directly
  (no second regex pass).
- Sequence counter prevents stale results from racing keystrokes.
- `ensureAllSessions` is a promise singleton; `last_scan` change in
  /api/stats invalidates the cache reactively (no more stale post-reindex).
- All `fetch()` calls have a 10 s `AbortController` timeout.
- Search query persists across reloads via `localStorage`.

Tests
- 19 new Rust unit tests in `search`, 3 in `parser`, 11 new integration
  tests in `http_integration` (DNS rebinding, search behaviour, clamp,
  quoted phrase, missing q).
- 64 JS unit tests via `node --test`, wrapped through a Rust integration
  test so `cargo test` runs the whole pipeline.

Bench
- `cargo run --release --example bench_search` reports rebuild + RSS +
  per-query p50/p99 for 100 / 1000 / 5000 synthetic sessions.

Docs
- README: new "search" section with DSL examples; updated "blazing fast"
  table with metadata-ready vs search-ready; new benchmark table.
- CHANGELOG: Unreleased section documents Added / Changed / Security /
  Performance.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@intjiraya intjiraya force-pushed the release-plz-2026-05-25T14-41-43Z branch from 3906c43 to 1b66255 Compare May 25, 2026 20:30
@intjiraya intjiraya closed this May 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants