chore: release v0.1.2#14
Closed
intjiraya wants to merge 2 commits into
Closed
Conversation
There was a problem hiding this comment.
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.2release entry toCHANGELOG.md. - Bump crate version to
0.1.2inCargo.toml. - Update the
constellationpackage version inCargo.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. |
918cd1c to
3906c43
Compare
…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>
3906c43 to
1b66255
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 New release
constellation: 0.1.1 -> 0.1.2 (✓ API compatible changes)Changelog
This PR was generated with release-plz.