Repository navigation
v1.2.0-rc.2
Pre-release
Pre-release
·
70 commits
to main
since this release
What's Changed
- The design-rationale bench measures feature questions and extracted rows with knowledge hits by @zlareb1 in #274
- A search excerpt serves a decision or constraint row as stored by @zlareb1 in #276
- The reference extractor reads Parquet as a table, its decimals exact by @zlareb1 in #269
- Decisions are extracted from the whole document as claims cited by quotes and checked against them by @zlareb1 in #277
- knowledge.query calculates over ingested datasets with a typed plan and a receipt by @zlareb1 in #278
- knowledge.synthesize answers from datasets with a plan it checks and runs, and abstains when the task is ambiguous by @zlareb1 in #279
- The ingest CLI and the Python SDK upload files for the server's extractor to parse by @zlareb1 in #280
- The TypeScript SDK uploads a file and follows its ingest job by @zlareb1 in #281
- knowledge.formats lists the formats an ingest reads and whether an extractor serves each by @zlareb1 in #282
- The dashboard uploads a file for the server's extractor and follows its ingest job by @zlareb1 in #283
- The Playwright API mock answers knowledge.formats, so the repository add dialog opens in e2e by @zlareb1 in #286
- The Library finds a passage inside its documents, cited by revision and place by @zlareb1 in #284
- The extractor image and the test environment pin pypdf 6.21.4 by @dependabot[bot] in #275
- tests/analyzer/shapes.txt holds the datasets' erasure and count statements by @zlareb1 in #296
- Frontend tests run as vitest and Playwright parts on separate runners, the budget specs after one warm-up boot by @zlareb1 in #288
- A DOCX document's headings sit under its Title paragraph by @zlareb1 in #295
- Five unit test files hold their literal-duplicate cases as parametrize tables by @zlareb1 in #294
- The unit job runs the suite on every core with pytest-xdist by @zlareb1 in #287
- Integration tests run as four parts and an isolation gates part, each on its own stack by @zlareb1 in #290
- PDF pages are read as laid out: tables, headings, columns and page furniture by @zlareb1 in #292
- A document-parsing bench scores the reference extractor on a labelled corpus of Loom's document shapes by @zlareb1 in #289
- loom knowledge migrate-originals moves the originals held in ClickHouse to the bucket, hash-verified by @zlareb1 in #285
- The detection tests' zip cases have the same ids in every worker by @zlareb1 in #299
- The parsing bench measures what a parse does downstream: search hits cited to their page, and decision quotes found in the file by @zlareb1 in #300
- Knowledge reads draw from their own rate bucket, and the extractor-less ingest tests configure no extractor by @zlareb1 in #291
- The reference extractor reads scanned pages and pictures with OCR, in process by @zlareb1 in #298
- The benchmark results report document parsing against a layout-model baseline, downstream included by @zlareb1 in #304
- An XLSX header over two rows names each column from both rows by @zlareb1 in #308
- A page or slide of text names the pictures, charts and diagrams it does not read by @zlareb1 in #301
- A gdrive source syncs the .docx files of a folder whose include names them by @zlareb1 in #314
- The unit job runs as six parts that each collect only their own files, their coverage combined in one job by @zlareb1 in #297
- Recalled memory, tracker titles and brief goals reach the agent in id-closed data blocks, and the plugin's temp files refuse planted links by @zlareb1 in #321
- An MCP JSON-RPC batch holds 1 to 64 requests by @zlareb1 in #330
- A release checks its owner-granted prerequisites first, builds each architecture natively, and can be rehearsed with a dry run by @zlareb1 in #316
- Noise sections of a document rank below close hits and stay out of a context pack by @zlareb1 in #293
- A server whose LOOM_BIND_HOST is not loopback refuses MCP open mode and a signing or verifying key below the minimum size, and the dev ClickHouse stays on loopback by @zlareb1 in #327
- A PDF font's ToUnicode map is read in one linear pass, not rescanned from each block opening by @zlareb1 in #339
- code.search authorizes a one-entry namespaces list, a tracker is linked only by its admin, and a taken inbox hides its owner by @zlareb1 in #310
- The inspector's Last recalled counts every agent read that served a memory by @zlareb1 in #311
- A dashboard sign-in link asks before switching accounts unless this tab started the sign-in by @zlareb1 in #320
- Every operation is on the dashboard or names why not, and the reach census gates it by @zlareb1 in #315
- The one-line SQL comment split test checks a linear ratio, so a newline scan to the end of the text fails it by @zlareb1 in #335
- The server image's Go and Node pins carry no fixed critical CVE: Go 1.27.3, Node 22.23.4 by @zlareb1 in #319
- A namespace's classify endpoint off the gateway is reached only over https at a public address it vetted by @zlareb1 in #318
- Blacklist regexes run on RE2 off the event loop, and the email and JWT detectors run in linear time by @zlareb1 in #307
- The Assistant page opens on the namespace's overview, and a user or agent is picked from it, not typed by @zlareb1 in #306
- The coding-agent plugins declare a minimum server version and SessionStart warns when the server is older by @zlareb1 in #328
- main's CI is green: the canary expects memory.get's served fields, the analyzer shapes carry the new schema dump, and the coalescer windows test does not race its timers by @zlareb1 in #350
- A synced document's Markdown export drops its pictures' base64 and marks where they were by @zlareb1 in #312
- The dashboard erases and exports a namespace's or a user's data, and shows who read what by @zlareb1 in #346
- bench.docparse score refuses two parses that share a name by @zlareb1 in #363
- code.search, tracker.ask and the decision extractor match identifier regexes in linear time by @zlareb1 in #342
- FlatBuffers union members and block headers are matched in linear time by @zlareb1 in #357
- testing.md says CI runs on pushes to main too and only a pull request's newer push cancels its run by @zlareb1 in #364
- The prompt-pack and code-shunt hooks match their tag and pattern regexes in linear time by @zlareb1 in #365
- The dataset delete tests wait for the catalog's delete too and count it under FINAL by @zlareb1 in #369
- The C++ compiler tier fetches submodule pins with the entry's GitHub token by @zlareb1 in #341
- canCall's role table shares one object per gate, so the index chunk carries no literal per op by @zlareb1 in #375
- A source sync reads an address's owner again just before it writes, so a document a person wrote during the fetch is left alone by @zlareb1 in #353
- An entity name longer than 256 characters once normalised is no entity, and a point write refuses one by @zlareb1 in #366
- A user erasure keeps the user's cancel on another writer's open ingest job, without the user's identity by @zlareb1 in #362
- Image and link-target markup in a decision document is read in linear time by @zlareb1 in #370
- The knowledge retrieval harnesses refuse a --param that filters the corpus by @zlareb1 in #373
- The loom-session and loom-status skills find the Codex plugin under the loom marketplace only by @zlareb1 in #372
- The audit-v1 and set-from-messages integration tests run under a minted token instead of skipping without self-signup by @zlareb1 in #376
- A CSV's quote guess reads its first 4 KiB, so quote-heavy text no longer takes seconds to sniff by @zlareb1 in #343
- Concurrency unit tests prove overlap from event order, not a wall-clock bound by @zlareb1 in #377
- Each ingestion fault ends the job typed with the earlier revision serving, and a locator past the original is refused by @zlareb1 in #368
- Recorded meeting notes keep their summary as content, and their transcript and template are labelled noise by @zlareb1 in #344
- An audit row's default subject keeps naming fields and hashes every other text value of the op's input by @zlareb1 in #334
- The e2e warm-up and budget specs wait for the rendered view, not the boot screens' heading by @zlareb1 in #380
- The Claude Code and Codex plugins work on Windows and on macOS symlinked checkouts, checked by a real session per platform in CI by @zlareb1 in #313
- An HTML data table is extracted as one block, a row per line with its cells joined by a pipe by @zlareb1 in #302
- The ingest-queue integration tests end every job they insert by @zlareb1 in #382
- Each code-index tier records its last outcome per entry, and a failing tier reaches as_of, code.index_status and code.repos with its error kind and fix by @zlareb1 in #347
- Langfuse erasure finds traces on Langfuse 4 through the observations list by @zlareb1 in #348
- Integration tests fail, not skip, when the ClickHouse client cannot connect by @zlareb1 in #384
- Each format the reference extractor declares passes declared floors, scored per format and slice by @zlareb1 in #385
- memory.reject refuses a locked memory, and a quarantine leaves one as it is by @zlareb1 in #354
- Live memory can be held in Postgres, with search and history in ClickHouse by @zlareb1 in #158
- The testing docs say an unhealthy LOOM_BASE_URL fails the test, and the unused skipping fixture is gone by @zlareb1 in #386
- A module first imported under a test's patch is imported again after that test, so no later test sees the double by @zlareb1 in #378
- Tracker links are read per org, and the operator's map links only the operator's repositories by @zlareb1 in #331
- A commit: or error: name is one graph node to every graph writer and graph seed by @zlareb1 in #383
- The assistant's design: LibreChat hosts the agent headless, Loom supplies its tools, each caller's identity and a database-scoped SQL tool by @zlareb1 in #349
- prompts.evaluate finds a prompt version's traces by a tag its generations carry, on Langfuse 3 and 4 by @zlareb1 in #389
- The Helm chart keeps the Loom pods off the instance metadata service with the network policy off by @zlareb1 in #367
- Knowledge search holds declared retrieval floors for identifiers, table questions and filtered recall by @zlareb1 in #388
- Raw HTTP routes, token mints and the MCP primer write the restricted-access audit row an admitted op writes by @zlareb1 in #358
- Model-call spans carry the OpenTelemetry GenAI keys both tools read by @zlareb1 in #392
- The Langfuse breaker gauge is documented as gating score posts, not traces by @zlareb1 in #393
- A self-service repository's admins are never mirrored onto an operator-configured repository by @zlareb1 in #338
- A user erasure, tombstoned or purged, retires the consolidated summaries of the user's memories and the cached answers that quoted them by @zlareb1 in #360
- A code-index tier that keeps failing is a code_tier_failing problem in /v1/health, the dashboard banner and loom doctor, and the repository card shows it per branch by @zlareb1 in #387
- docs/reference/status.md counts each op group's stable ops, names its experimental ones and lists every boolean setting that loads false by @zlareb1 in #333
- Every span sent to Langfuse carries the request identity, and search stages are retriever observations by @zlareb1 in #390
- The C/C++ compiler tier reconfigures CMake when a window adds a translation unit or edits the build, and before a full index by @zlareb1 in #379
- One token flow: Settings → Tokens mints every token, reading everything you belong to or only the namespaces you tick by @zlareb1 in #326
- Knowledge ops have declared service levels, and a mixed-load harness checks a server against them by @zlareb1 in #394
- The Review queue settles duplicates and proposals, and suggests a decision for a conflict by @zlareb1 in #359
- An agent's claim code claims its namespace once and never signs in by @zlareb1 in #336
- Diagnostic reports read memory at the Postgres authority's barrier and cite only the heads it serves by @zlareb1 in #391
- A read_only memory keeps its own expiry through a restatement, not its type's retention by @zlareb1 in #381
- scripts/release/prepare.py bumps every version file and writes the notes, and a release takes only vX.Y.Z or vX.Y.Z-rc.N in candidate order by @zlareb1 in #325
- Failing code-index tiers are the loom.code.tier_failing and loom.code.tier_lag_commits gauges, with a dashboard alert and an opt-in Prometheus rule in the chart by @zlareb1 in #398
- An erasure deletes the cached code.ask answers that quoted the erased memory by @zlareb1 in #332
- Health shows the namespace's memory report and projection failures, and an admin runs repairs there by @zlareb1 in #395
- The ingest worker takes the next job as soon as one ends, and reads it under its lease with sequential consistency by @zlareb1 in #401
- The knowledge load retries its dataset read and backs off rejected status polls by @zlareb1 in #404
- Caller-facing error fields name the error kind, not the store's text by @zlareb1 in #329
- Self-signup cannot claim a subject the settings or grants empower, and a trusted caller cannot act for a revoked subject by @zlareb1 in #305
- The writing-memory guide describes how an agent proposes a fact and a person approves it by @zlareb1 in #403
- The memory drawer locks, expires, rejects, shares, judges and redacts a memory, and shows its evidence and links by @zlareb1 in #351
- Admin-only edges answer from the gate (restricted adoption, sweep scope, audit by namespace, tracker source authority) and a private repository's code index stays private until restricted by @zlareb1 in #323
- Request-path regexes read long input in linear time by @zlareb1 in #317
- Guardrails sweep a pattern's stored matches and hold the org's extraction rules; Settings lists memory webhooks by @zlareb1 in #371
- The Assistant page's server text is in plain words, and the exact names ride a refs field by @zlareb1 in #361
- A namespace that holds data or grants cannot be claimed by sign-up or registered as new by a non-admin by @zlareb1 in #340
- Each release's install.sh installs that release, a cut-off download runs nothing, and every release rehearses the one-liner in clean containers by @zlareb1 in #345
- The Library stops an ingestion, approves a file's tables and moves a collection; a source shows its details by @zlareb1 in #396
- knowledge.restore brings a deleted document and its chunks back, and never what an erasure reached by @zlareb1 in #309
- The retrieval page says when to pass rerank and what the published results measure by @zlareb1 in #408
- Settings has a Structure tab for record schemas, the profile schema, the ontology and categories by @zlareb1 in #400
- Every coded error carries category and retryable, and MCP's namespace refusal names its next step by @zlareb1 in #303
- Release images are signed keyless by the release workflow, and the release check verifies the signatures by @zlareb1 in #407
- The MCP instructions put the caller's profile after Loom's rules by @zlareb1 in #409
- Each release attaches agent-setup.txt, a pinned setup contract a coding agent runs and reports in loom doctor's format by @zlareb1 in #411
- A loom-release skill orders a release's steps and checks, supported-versions states the N and N−1 lines and the SDK rule, and npm's latest follows the GitHub Release's Latest by @zlareb1 in #412
- Threads, runs, briefs, the guide, the picker, coding-agent spend and a branch re-walk have their dashboard controls by @zlareb1 in #402
- The installer stack embeds with a pinned local model its image carries, and a release check searches with no egress by @zlareb1 in #410
- insights.query runs read-only SQL that ClickHouse holds to the token's org and namespaces by @zlareb1 in #397
- The Claude Code MCP header helper takes its code scope from the session's project directory by @zlareb1 in #415
- A tracker source without github_prs.test_types or src_components serves them as [] by @zlareb1 in #416
- A failed expiry-sweep search mirror is recorded as a projection failure and replayed by @zlareb1 in #414
- A restricted branch added from the page takes admin grants only from the operator's entries by @zlareb1 in #406
- LibreChat runs headless beside Loom with the assistant agent Loom seeds at boot by @zlareb1 in #418
- The health endpoints count git mirrors without naming them, and a gateway refusal's message carries only its status and code by @zlareb1 in #420
- Mirrors and checkouts under the code repos root are writable by the group code_repos_shared_gid names, and closed to other users by @zlareb1 in #417
- A first write into a name in use records no owner, and task rows reserve and answer only for the subject they name by @zlareb1 in #421
- The code index reads checkout manifests and harness deltas only as bounded regular files by @zlareb1 in #322
- Every writer that rewrites a namespace's directory row holds its account claim by @zlareb1 in #425
- loom reembed skips a row deleted, tombstoned or given other text before its page's insert by @zlareb1 in #426
- The Loom assistant answers through Loom: a streaming chat route and assistant.ask, each answer as its caller by @zlareb1 in #419
- The graph-stats test map pairs stems in a thread, so the event loop keeps the supervisor lease by @zlareb1 in #427
- A tier that cannot write a file records the file and a permission fix by @zlareb1 in #429
- The image ships pnpm 12.15.0, which reads workspaces that set lockfile options by @zlareb1 in #431
- A failed checkout gc is logged, not recorded as the compiler tier's failure by @zlareb1 in #434
- A tree-sitter parse of repository text stops reading it at code_parse_timeout_s by @zlareb1 in #422
- A failed TypeScript dependency install is recorded with the installer's output by @zlareb1 in #432
- A parsed tree reads its text after the parse deadline has passed by @zlareb1 in #437
- A user erasure removes what a consolidated summary of the user's memories fed: its history, chunks, vectors, graph rows and shared copies by @zlareb1 in #423
- Under the Postgres authority each knowledge document's head is committed in Postgres over the version its writer read by @zlareb1 in #405
- The live documents round-trip test writes its first version over none, as insert_one now requires by @zlareb1 in #440
- A linear-time test's time bound is on the code's own cost, with coverage's tracer paused by @zlareb1 in #438
- insights.query works where log_queries is pinned, and no logged error quotes the scope key by @zlareb1 in #428
- Under Postgres, knowledge.inspect says which document commits ClickHouse does not hold and lists only documents knowledge.get serves by @zlareb1 in #439
- Each Loom assistant answer comes back with its citations checked against what Loom holds and what the answer read by @zlareb1 in #430
- The dashboard's Assistant page chats with the assistant, its checked citations linking where verified by @zlareb1 in #444
- Under Postgres, a key's first memory.set answers at the commit and ClickHouse gets one insert per table per flush by @zlareb1 in #433
- A bulk_set batch writing a key twice owes a search document only for the row it embedded, and identity dedup finds a keeper ClickHouse is still owed by @zlareb1 in #446
- insights.query names its custom settings under the prefix the server takes by @zlareb1 in #442
- Under Postgres, each revision's key, status and redaction live in typed columns that every journal reader but the profile reach matches on by @zlareb1 in #445
- An operator code entry never takes over a namespace a member added, and a dropped access row is not listed as a branch by @zlareb1 in #424
- The Python and TypeScript SDKs stream a Loom assistant answer, with its checked citations by @zlareb1 in #443
- A tree-sitter parse runs first in a child process held to code_parse_memory_mb and code_parse_timeout_s by @zlareb1 in #435
- Under Postgres, every reader takes a field a stored row leaves out as its loom.memory default by @zlareb1 in #455
- Under the Postgres authority knowledge search serves only the chunks each document's head serves by @zlareb1 in #441
- Bulk writes keep every entry in an append_only namespace, and LOOM_MEMORY_BULK_PEER_READ=per_fact reads bulk peers codes-first by @zlareb1 in #451
- A statement that finds ClickHouse short of the server's or the user's memory answers 503 OVERLOADED, not 500 by @zlareb1 in #458
- A tenant's SQL user reads its memories, conversations and request ledger through versioned, scoped views by @zlareb1 in #450
- Code-index lane walks read a file in linear time by @zlareb1 in #448
- Under Postgres, knowledge ingestion jobs live in loom.knowledge_jobs, each save fenced by its run's token by @zlareb1 in #447
- An org reads the SQL surface from its own Postgres through pg_clickhouse by @zlareb1 in #461
- A scale harness loads synthetic memory into both stores and measures where memory's ceilings are by @zlareb1 in #454
- erasure.status returns the erasure's receipt: every substrate its latest census counted, and the purge it applied by @zlareb1 in #462
- The Helm chart runs Loom with an external Postgres as the memory authority, and an overlay sets up ClickHouse Cloud plus Managed Postgres by @zlareb1 in #467
- Under Postgres, a publisher reads another session's commit durably before sending what it built from it to ClickHouse by @zlareb1 in #456
- Under Postgres, knowledge.inspect counts the ingestion jobs ClickHouse holds at an older version by @zlareb1 in #466
- Under Postgres, loom reconcile runs again in a restored store the erasures and redactions the other records past the restore point by @zlareb1 in #460
- Code-index extractors and PR text read a file in linear time by @zlareb1 in #463
- Memory search's key-match arm splits a key at whitespace before stemming it by @zlareb1 in #475
- A tracker source that lacks a feature column reads it as a default, so its PR-file reads no longer fail by @zlareb1 in #477
- Under Postgres, the dataset catalog lives in loom.knowledge_datasets, and an approval commits with the source's head by @zlareb1 in #465
- An assistant answer's token, or a token delegated from one, cannot ask the assistant by @zlareb1 in #480
- An analysis health problem names ClickHouse's code, error name and a fix for the cause by @zlareb1 in #472
- A reachable server refuses open self-signup unless trust-network is named by @zlareb1 in #483
- An assistant answer says how far it rests on what Loom holds, and an answer that claims nothing carries no label by @zlareb1 in #476
- The assistant's readiness and refusals name their reason, so a client can say who fixes what by @zlareb1 in #485
- Under Postgres, the publication pipeline reports its search wait, projection lag, backlog and inserts by @zlareb1 in #469
- The token form's Only these namespaces ticks nothing at first and shows the ticked ones as one search order, moved by drag or by arrows by @zlareb1 in #481
- The assistant is told to write no text before its tool calls, so a lead-in no longer runs into the answer by @zlareb1 in #479
- The code_tier_failing problem says why each tier fails and, to an operator, which entry by @zlareb1 in #470
- A lease renewal that hangs is cut short and retried before the lease counts as lost by @zlareb1 in #489
- The server locks dnspython 2.9.2 by @zlareb1 in #491
- Dashboard errors say what happened and whether trying again can help, and name no cause they are not sure of by @zlareb1 in #474
- Code-index call binding, parses and import resolution stay linear on repeated names, calls and deep paths by @zlareb1 in #482
- The TypeScript SDK tests run on vitest 4.1.12 by @zlareb1 in #492
- The dashboard's tests run on vitest 4.1.12 by @zlareb1 in #493
- The assistant reads Loom's documentation through help.search and help.get by @zlareb1 in #488
- A compiler-tier delta is applied a round at a time, so its memory is one round and a small record per entry by @zlareb1 in #478
- workers_lease_absent appears only when no process holds a live workers lease by @zlareb1 in #490
- A collection is created from a title, its name derived, and a taken name says why with a free one by @zlareb1 in #471
- The assistant chat e2e reads an overloaded refusal by the shared wording's lead-in by @zlareb1 in #499
- An assistant answer cites Loom's docs as [help:], checked against the shipped pages, and an invented op or setting name makes it unsupported by @zlareb1 in #498
- The dashboard page's table is formatted as prettier writes it by @zlareb1 in #510
- A single-user install mints tokens from Settings → Tokens by @zlareb1 in #501
- The Help view test waits for the scroll to the cited section by @zlareb1 in #511
- The regex linear-time checks count CPU time, not wall time by @zlareb1 in #507
- A list token saves where its mint recorded, so switching namespace on the dashboard no longer moves it by @zlareb1 in #496
- The code-index cost tests judge growth, not the runner or the collector by @zlareb1 in #502
- The assistant answers how-to questions for the person asking and searches the namespace and the docs together by @zlareb1 in #509
- The analyzer's shapes file holds the schema dump's current shape by @zlareb1 in #512
- The SDK READMEs install from PyPI and npm, and their first examples run by @zlareb1 in #505
- The package and registry listings describe Loom's shared long-term memory, document search and code index; the package pages link the SDK references by @zlareb1 in #506
- The Library shows where a collection sits and the collections inside it by @zlareb1 in #487
- The quickstart and connect guide describe what a fresh install does by @zlareb1 in #508
- The assistant chat is a panel the header opens on every page, its conversations kept in the browser by @zlareb1 in #494
- The docs and llms.txt say Postgres can hold live memory, not that ClickHouse is the only store by @zlareb1 in #504
- The documented installer command fails visibly when its download fails by @zlareb1 in #500
- The README says what Loom is for and when it does not fit by @zlareb1 in #503
- An assistant answer's label says how many of its sources Loom found, and no label or source says "verified" by @zlareb1 in #516
- The SDK READMEs open with what Loom does, matching the package metadata by @zlareb1 in #517
- Each assistant question names the page it is asked from, and Ask about this names a memory, a document or a Recall result by @zlareb1 in #518
- The assistant qualification set covers every Loom use case, with help cases scored by the server's citation rule by @zlareb1 in #513
- The Library takes many files at once, each its own document, sent three at a time with a line per file by @zlareb1 in #486
- The quickstart states the single-user defaults at the first call and reads a memory back by key by @zlareb1 in #527
- The dashboard shows a collection as a collection, by its title, never as a namespace by @zlareb1 in #515
- A trusted caller acts for an sa: subject only while it names an active bot or its agent by @zlareb1 in #531
- The analyzer's shapes file lists list_mine's statements with the namespace title by @zlareb1 in #533
- The Library lists collections shared with you apart, opens one when no namespace is set, and says a top-level collection belongs to the org by @zlareb1 in #532
- Harnesses and bench processes outside the CLI read the repository registry before listing entries by @zlareb1 in #530
- The plugins name the dashboard's Record conversations switch by @zlareb1 in #528
- The assistant's starters read Loom's own cards into the conversation, and a streamed answer shows its steps by @zlareb1 in #524
- A write that committed with only lists and search behind shows as made, never as a failure to send again by @zlareb1 in #534
- Cells: a deployment spreads its orgs over complete deployments behind a router, each serving only the orgs placed in it by @zlareb1 in #452
- A cell's process serves only while its own rows in Postgres accept its configuration by @zlareb1 in #468
- A new account lands on Memories with a two-step checklist that ticks from what Loom holds by @zlareb1 in #537
- A cell serves only the orgs it holds, and places a token's new org through the router by @zlareb1 in #473
- Every CLI command that connects declares the orgs it writes, and a cell refuses one it does not hold by @zlareb1 in #484
- The repository names its MCP directory maintainer in glama.json by @zlareb1 in #542
- The router's directory and placement API: a cell places a new org, and a client finds an org's cell by @zlareb1 in #497
- Storage layout: the store each table belongs in, and the wave that moves it by @zlareb1 in #495
- Every empty page says what will appear there and offers the action that fills it by @zlareb1 in #540
- The storage layout test reads the Postgres ledger from the function that writes it by @zlareb1 in #543
- A first cell in recording records a new org only while the directory answers that it is attaching by @zlareb1 in #519
- The router answers a placed org's lookup from its cache while the directory is down by @zlareb1 in #520
- The SDKs raise a typed WrongCell that names the org and its cell by @zlareb1 in #521
- loom login --org signs in at the org's cell, as the router's lookup names it by @zlareb1 in #522
- The router routes every other request to one cell by host, SCIM, issuer or the first cell by @zlareb1 in #523
- A duplicate asset cache-header test that left a route on the shared app is gone by @zlareb1 in #547
- loom cell limit and credential write the router's directory through its operator API, and loom cell which reads its lookup by @zlareb1 in #526
- The assistant's answers offer Copy, Retry and an edit of the last question, and end at the end of their text by @zlareb1 in #536
- A deployment answers its id on a probe route, and a probe listener echoes prepare's nonces by @zlareb1 in #529
- The README carries package, license and MCP score badges and an Add to Cursor link by @zlareb1 in #545
- loom install gives Cursor the coding toolset, as the dashboard does by @zlareb1 in #548
- The router registers a cell once its probe listener answers the cell's deployment id and prepare's nonces by @zlareb1 in #535
- Under Postgres, a revision every usable ClickHouse backup holds can lose its payload, past a horizon no shorter than the backup interval plus 60 minutes by @zlareb1 in #457
- loom cell prepare registers a cell through the router's probe and writes its first, mode and own rows by @zlareb1 in #538
- A control your role cannot use shows what it needs, instead of being hidden by @zlareb1 in #544
- The analyzer's shapes file matches the schema dump again by @zlareb1 in #550
- The default MCP listing carries the ten memory-loop ops plus loom_search, loom_activate and loom_op, and the rest run through loom_op by @zlareb1 in #546
- CI scores the repository with the plugin catalog's pinned scanner on every pull request and push to main by @zlareb1 in #554
- The npm release job runs on Node 24, whose npm supports trusted publishing by @michael-anastasakis in #553
- The README shows the TypeScript SDK's npm version beside the Python SDK's by @zlareb1 in #556
- Directory listings name the project ClickHouse Loom by ClickHouse, with AI and database topics and one icon by @zlareb1 in #558
- CI runs CodeQL on the server, SDKs, dashboard, plugins and workflows and reports to code scanning by @zlareb1 in #555
- The docs and CI skills say CI runs on release/X.Y lines too by @zlareb1 in #559
- The npm release job publishes only through trusted publishing by @michael-anastasakis in #557
- Release 1.2.0 by @zlareb1 in #560
- Document sources: the design for sources on any namespace, many links, connected accounts and mirrored access by @zlareb1 in #539
- The collections Sharing test waits for the place description to load by @zlareb1 in #561
- Document sources live on any shared namespace or collection, and the Library shows the sources of the place in view by @zlareb1 in #541
- The release build writes the Python SDK's version in its PEP 440 form by @zlareb1 in #563
- The Library's sources open from a Sources button, so its first row stays within the list-page budget by @zlareb1 in #568
New Contributors
- @michael-anastasakis made their first contribution in #553
Full Changelog: v1.1.0...v1.2.0-rc.2