AAkitaOnRailsdocs: point the project homepage at aimemory.sh
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(web): say when search results are cut at 50 The search page asked for exactly 50 hits and printed "50 results" even when more pages matched. Request one extra row and show a notice instead of the count when it comes back. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> | 2 天前 | |
fix(web): keep skip link on the current page and finish AA contrast The injected <base href> sent the bare #content skip link to the web root, and <main id="content"> could collide with a heading slug. The link now targets #main-content and is rewritten to the current path, the author name and input placeholders meet AA contrast in both themes. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> | 2 天前 | |
Merge PR #1237: fix(web): add skip link, search labels, breadcrumb semantics and AA contrast # Conflicts: # CHANGELOG.md | 1 天前 | |
Merge PR #1237: fix(web): add skip link, search labels, breadcrumb semantics and AA contrast # Conflicts: # CHANGELOG.md | 1 天前 | |
docs: point the project homepage at aimemory.sh The official landing page is now https://aimemory.sh. The README links it at the top, the Cargo workspace gains a homepage field the shipped crates inherit, and the Nix flake, AUR and RPM packages use it as their homepage. The repository URL stays where a source is meant: Cargo's repository field and the package source downloads (the PKGBUILDs gain a _repo variable so url can name the site). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MDbhmszrjG9s5MrPrTuNtm | 1 天前 | |
perf(dev): a self-contained build and a two-tier test loop on every platform The edit-to-result loop was ~380s for the workspace on macOS and needed an environment variable on every command. This makes `cargo t` the whole story on macOS, Linux, and Windows, with numbers measured along the way. Build - `[profile.dev]` keeps only line tables (full debuginfo put ~190 MB of DWARF in each test binary and made the build linker-bound); dependencies build at opt-level 1 with no debuginfo; proc macros and build scripts at opt-level 3, since they are run once per dependent crate. - Test binaries: 78 to 11 in the everyday loop (13 under `--workspace`). Each one is a link and, on macOS (Gatekeeper) and Windows (Defender), a first-run malware scan of the whole file, paid serially by nextest's list phase before the first test starts. Integration tests now live in `tests/suite/` and compile into their crate's own test harness (`mod.rs`, included from `src/lib.rs` under `#[cfg(test)]`, with `extern crate self` so they keep addressing the public API by crate name). Only the CLI keeps a separate `suite` target, because its tests run the built executable. The evals harness leaves `default-members`, so a bare `cargo t` skips its two binaries while `--workspace` (CI, the hook, `cargo tf`) still builds them. A repo-layout test fails on an undeclared suite file, a stray top-level `tests/*.rs`, or a `mod.rs` that `lib.rs` never includes. - `ai-memory-cli` gains a lib target; `main.rs` is a shim. 806 tests that lived in the bin are reachable, and `--lib` runs skip the 127 MB binary. - The web crate's vendored `static/tailwind.css` is the default on every build, so nothing needs `TAILWIND_SKIP=1` any more: every release, Docker, and CI path already used the vendored file, and the download branch only ever ran for developers who forgot the flag (and then rewrote the source tree as a side effect). `TAILWIND_BUILD=1 cargo build -p ai-memory-web` regenerates it explicitly. CI runs that on Linux and fails if the committed file is stale, a check that did not exist before; the committed file reproduces byte for byte today. - `tokenizers` aligned on one version instead of the 0.21 pin plus the 0.22 candle pulled in. Test tiers - `.config/nextest.toml`: the `default` profile skips any test whose module path has a segment starting with `slow` or `stress` (`packaging::slow::*` drives real wrapper scripts and fake container engines at 10-20s each; `stress_*` modules hammer concurrency), reports every failure in one run, and marks anything over 5s in its summary so a new slow test is visible the day it lands. `full` runs everything. `ci` keeps its retries and writes JUnit. - `.cargo/config.toml` holds two aliases and nothing else: `cargo t` (default members) and `cargo tf` (`--workspace -P full`). `cargo t -p <crate>` builds just that crate. Neither passes `--all-targets`: there are no examples or benches, and it only added harnesses for two `test = false` targets. - `scripts/install-git-hooks.sh` installs an opt-in pre-push hook that runs the full tier, touching only its own marked block. Two independent things run the skipped tier: that hook, and CI, which uses `cargo test` and never reads the nextest config. Slow tests fixed rather than tiered - `project_observations` in the consolidator trimmed an over-budget projection one observation at a time, re-rendering the whole text and re-scoring every remaining candidate after each removal. Each score scans the body, so 256 observations of 4k chars cost ~65k body scans per prompt: 14s in production consolidation, exactly as in the unit test. Scores and per-block sizes are now computed once and the prune subtracts; output is unchanged and pinned by the existing tests. 13.9s to 0.18s. - Windows takes ~2s to refuse a loopback connect, so every hook test that posted to a closed port paid 2s per request. `dead_http_endpoint()` in the new `ai-memory-test-support` crate accepts and closes instead, with a fallback to the closed port where binding is denied. devin hook tests: 4.2s to 0.15s each. - The store unit fixture opened a file-backed SQLite with the default rollback journal and synchronous=FULL, so ~120 parallel fixtures fsynced every transaction. journal_mode=MEMORY + synchronous=OFF: 242s to 89s of test time, p90 1.6s to 0.5s. - Windows-only tests resolve `powershell.exe` or `pwsh.exe` once per process and the auto-improve eval fixtures are `.ps1` scripts instead of cmd.exe batch files; a post-bind settle sleep is gone; the two unpinned multi-thread tokio tests pin `worker_threads = 4`. The four copies of the PowerShell resolver and the mcp suite's duplicated `post`/`get` helpers are now one each. Not done, with the numbers in AGENTS.md: nextest vs in-process libtest is a wash per crate and a rout for the workspace (20s vs 309s); the `local-embeddings` default feature costs ~50s of cold build and ~27 MB per binary but under a second per relink, so it stays a product default. Measured: workspace loop ~380s to ~150s on macOS; on a 32-thread Windows box the warm everyday run is 20s of test time across 2919 tests in 11 binaries, and the rebuild after a core edit is 13s of cargo with lld plus the first-run scans. | 1 个月前 | |
ai-memory-web: read-only HTTP wiki browser New crate that exposes the wiki as a navigable website, mounted at /web on the same axum server as the MCP endpoint. Read-only by design — no editing, no POST routes, no agent-write surface. The wiki stays the source of truth on disk; this just makes it browsable from a phone, a tablet, or a teammate's machine without `docker exec cat …`. What's there: - Project-list homepage: cards per (workspace, project) with page count + humanised last-activity. - Project view: collapsible folder tree (groups by first path segment — sessions/, _rules/, decisions/, etc.) + recent-pages column with title, kind badge, relative timestamp. - Page view: breadcrumb, title, metadata row (tier badge, kind badge, pinned icon, created/updated/supersedes), then rendered markdown with GFM tables / footnotes / strikethrough / tasklists. - Search: thin /search?q= over the existing FTS5 index — same ranker memory_query uses — with HTML-marked snippets. - Light/dark theme via prefers-color-scheme. Logo `<picture>` swap between docs/logo.png + docs/logo-dark.png. No JS toggle, no cookie, no client-side anything. Build pipeline: - Tailwind v3.4.17 standalone CLI downloaded by build.rs (per-host binary, cached under OUT_DIR), runs over templates/**/*.html to produce OUT_DIR/tailwind.css. include_str!()'d into the binary via cargo:rustc-env. TAILWIND_SKIP=1 + a vendored 19KB compiled fallback at static/tailwind.css keeps offline builds working. - askama 0.12 templates compiled at build time; one view-model struct per route. pulldown-cmark 0.12 for markdown. Store-side additions: - ProjectSummary / PageSummary / PageMeta types and the three matching ReaderPool methods (list_projects_with_stats, list_pages, page_meta) needed to populate the views without bloating any existing query path. Each with a fresh unit test. CLI wire-up: - `ai-memory serve --enable-web` (off by default) nests the web router BEFORE the bearer middleware so it inherits the same auth posture as the MCP endpoint. Adds an explicit /web/ → /web 308 redirect to keep both URLs working under axum 0.8's nest + inner-`route("/")` behaviour. - Documented in README under "Browse the wiki in a browser". Test coverage: 5 smoke integration tests (every route returns 200 + expected content), 3 store-helper unit tests, 2 markdown unit tests. Workspace tests: 175 pass, clippy clean, fmt clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> | 4 个月前 |