Featurescli alepha docs --app maps the project's own app from its container: actions with schemas, entities, pages, routes, jobs, topics, env names #E91 #Q2759 4af3550 cli alepha init's AGENTS.md, the package's agent notes, llms.txt and every package.json point agents at alepha docs and the local docs/ #E91 #Q2757 a18383a cli alepha docs prints the installed packages' docs from node_modules: the index, a page by slug or name, or --grep results #E91 #Q2756 a6f8fb8 platform bay({ stack }) deploys the app into its service of a Bay stack environment #E92 #Q2762 9ce6727 cli every published package ships its docs pages at docs/<slug>.md, with front matter and links rewritten to local pages #E91 #Q2755 86dc7de ui @alepha/ui/ai, an AiChat drawer, useAiChat and useAiContext with navigate and fillForm client tools; $client opens a $sse from the browser #E93 #Q2774 6ed9567 api alepha/api/ai, conversations with chat and resume over $sse, a per-user token budget, a turn rate and retention; $sse gains use #E93 #Q2773 2c610c2 ui the shell reads right to left, nav groups are disclosures, Control gains checkboxes, month and accept #Q2760 d36a426 ui/admin analytics explorer for gauge folds, sub-hour grains and instant ranges #E90 #Q2752 89b05ef api/analytics buffered recording for high-throughput ingest #E90 #Q2751 468d889 api/analytics instant-precision query bounds (from/to) #E90 #Q2750 32b6e2b api/analytics multi-tier rollup chain and minute/hour retention windows #E90 #Q2749 739d53a api/analytics sub-hour bucket resolution (1m, 5m, 15m) #E90 #Q2748 2035b25 api/analytics gauge measures with min, max and last folds #E90 #Q2747 8619a6f ui DataTable leading slot, drawn on the toolbar's row before the search (Club #Q669) fec3f6f mqtt $topic request/response, MQTT 5 Response Topic natively, emulated elsewhere #E88 #Q2739 9f76fae mqtt $topic over MQTT, with shared groups and wait() on templated names #E88 #Q2738 8ae0d75 mqtt restore @alepha/mqtt as an MQTT 5 client with a memory broker #E88 #Q2737 807a65d Bug Fixesapi/analytics the rollup sweep logs each step's time, and a prune deletes at most 36 last-tier buckets per tier a sweep #Q2938 4f72317 core APP_NAME is declared secret: false, so a build's manifest lists it as a variable and Lore stops sealing it #Q2945 8a9239d cli alepha docs stops at the node_modules holding alepha, so a project inside another checkout never lists the outer install's packages #E91 #Q2756 7188534 ui AiChat keeps the typed message when the drawer re-renders before Send #Q2934 c7a2cfd system the shell finds a project binary in any parent node_modules, not three levels up #Q2765 82b0754 orm await the Bun reserved connection's release, a promise in @types/bun 1.4.4 #Q2765 8caaf6c cli the changelog leaves out commits that only touched a sibling product folder #Q2765 7b5b671 react/router the boot marker wraps the first screen's leaf instead of sitting beside it, so useId matches the server (Club #Q704) c9b30b1 api/analytics recordMany pre-folds rows sharing a bucket and dimensions #E90 #Q2754 bcd874f api/organizations assigning the default rank clears the stored one, and the owner is never demoted by assign (Club #Q676) d2f7fdd cli Cloudflare builds emit send_email again, and fail when detection misses #Q2745 d5e2bfb
Featurescli infra db export uses D1's export API, no wrangler #Q2616 e6a6fa7 api/jobs $job's timeout runs on deadline(), and the cancellation guide covers timeouts #E87 #Q2726 1d29677 server,orm timeout on HttpClient calls and repository statements #E87 #Q2725 9cb9e94 server,mcp timeout on $action and $tool, off by default #E87 #Q2724 f88d50f datetime deadline() aborts the ambient signal with a TimeoutError #E87 #Q2723 a5c16d0 api/payments createSession takes a label, so the hosted checkout names what is paid #Q2736 363c981 react,server,websocket,command SSR, $sse, WebSocket admission and CLI commands get a deliberate signal #E85 #Q2730 4e06557 api/jobs,queue,scheduler,mcp background work runs under its own ambient signal #E85 #Q2716 69decdd orm reads cancel on abort; writes and transactions never cut short #E85 #Q2715 8e04e11 server,system HttpClient and ShellProvider default to the ambient signal #E85 #Q2714 2daa1be server,api/jobs an abort is an outcome, not an error #E85 #Q2729 35eac49 core ambient AbortSignal per request, aborted on client disconnect #E85 #Q2713 36df518 server $sse requires path #Q2734 a500bd0 server $action requires method and path #Q2733 275358b server rehydrate registered error classes in HttpClient #E84 #Q2710 7c00996 server add opt-in strict errors to $action #E84 #Q2708 a7c2a3b server add $error typed error constants and a code registry #E84 #Q2707 3bb3aa4 crypto version stored hashes and ciphertexts #E82 #Q2695 70f1c84 crypto unify async runtime contracts and digests #E82 #Q2667 0dae86d cli validate configuration at import time #E82 #Q2681 f9ce96a cli version build manifests and flatten image config #E82 #Q2660 bb36141 router push and anchor take a known page name with its params, or a path starting with "/" #E81 #Q2679 a986d98 react useAction v2, the context comes first and run() resolves a RunResult #E81 #Q2657 1277aa9 server POST by default, $secure on tools and websockets, a typed optional user, security errors with their own status #E81 #Q2658 887311f react <Personal fallback> keeps a page shared around its personal part, and ButtonUser uses it #E78 #Q2651 97182c7 ui UI preferences never reach a server render, so AppShell pages can be shared #E78 #Q2680 394feb0 react anonymous double render refuses a page cache write that differs for nobody #E78 #Q2648 82efacc react page.invalidate(params?) and $page({ cache: { invalidatedBy } }) purge what a write made stale #E78 #Q2652 1839d20 react automatic page cache, shared pages served to everyone from page:<build>:<name>:<params>:<query>:<lang> #E78 #Q2647 a15a06b lock alepha/lock picks RedisLockProvider when REDIS_URL is set; alepha/lock/redis is deleted #E79 #Q2677 95c1e14 react read tracking rules every SSR page shared, variant or personal #E78 #Q2646 e932465 actor alepha/actor picks the Redis actor provider when REDIS_URL is set; alepha/actor/redis is deleted #E79 #Q2676 3d8c85d orm a partial index where takes a where-object, compiled with inlined values #E83 #Q2692 c6904e8 queue alepha/queue picks RedisQueueProvider when REDIS_URL is set; alepha/queue/redis is deleted #E79 #Q2675 81c2433 orm aggregate() over computed values, { expr } keys and sources #E83 #Q2691 a3257df react split hydration, __ssr carries what the page shows and __ssr_private who it is for #E78 #Q2645 185bd57 topic alepha/topic picks RedisTopicProvider when REDIS_URL is set; alepha/topic/redis is deleted #E79 #Q2674 653ab29 orm repository.subquery() for exists / inArray, and columns or SQL as comparison values #E83 #Q2689 78c6717 cache alepha/cache picks RedisCacheProvider when REDIS_URL is set; alepha/cache/redis is deleted #E79 #Q2673 e73e9b2 orm update methods take touch: false to leave updatedAt alone #E83 #Q2690 54914b6 orm repository.excluded(key) names an upsert's incoming value by its physical column #E83 #Q2693 a135c66 redis REDIS_URL is the one switch, the Node client loads lazily, and the test env sets no REDIS_URL #E79 #Q2672 f8e553d Bug Fixescli gen changelog keeps every line of a wrapped prose BREAKING CHANGE footer #Q2743 e5dc70f datetime utc() parses a plain date string as UTC again #Q2735 88ab712 actor on workerd a reducer's error reaches the caller with its own message, not DO RPC's "AlephaError: ..." #Q2706 19208d6 cli the scaffolded hello action declares GET, and the desktop e2e POSTs to its counter #E81 #Q2658 154f12f orm db.* helpers stop mutating schemas, LockPrimitive is removed, a nested $transactional refuses what it cannot honour #E81 #Q2659 88351fe testing copy the vitest setup file only in the package that has it, since every workspace builds with this script #E80 #Q2671 901071f cli --if-stale sees config files and the resolved runtimes, compile stages its entry so a retry succeeds, docker/wrangler/sqlite run as argv #E80 #Q2665 7f4cab3 orm pattern operators skip the codec and a missing codec is no longer swallowed; stale tenant comments and TODOs rewritten #E80 #Q2684 cff45bc logger JSON logs write [Circular] at a cycle only, expand a shared Error twice, and print a BigInt as a string #E80 #Q2683 1df8bdd server compression honours Accept-Encoding quality values, q=0 refuses an encoding #E80 #Q2666 40a8ee9 core stop() runs every hook within an 8 s budget and always clears its state, start() never boots twice outside serverless, MissingContextError exported #E80 #Q2664 64d0039 api/jobs the unregistered-job purge reads the names present from an index, so an empty purge no longer scans job_executions #Q2705 ff8e737 api/jobs every write after a claim is fenced on attempt and startedAt, so a stale attempt cannot finalize, delete or heartbeat a newer one #E80 #Q2663 6287c39 security cookie credentials need a same-origin request on HTTP writes, WebSocket upgrades and OAuth consent, and a refresh keeps its refresh_token #E80 #Q2655 5d9055d orm Postgres migrations run under a per-schema pg_advisory_lock, so a second booting instance waits instead of crashing #E80 #Q2699 #Q2702 be2851f orm no query cache inside a transaction, invalidation after commit and awaited, and a cache hit is a copy #E80 #Q2702 4547b5a react a shared query survives an unmount, invalidation reaches in-flight reads, a debounced run settles on unmount, and a throwing onSuccess no longer fails a successful action #E80 #Q2700 ab9fc2a testing ship testing/vitest/setup.ts in dist, and guard every new URL(literal, import.meta.url) in the packed package #E80 #Q2671 dec3efb cli migrations apply drops the --provider it ignored, and the starter spec uses describe + it #Q2662 dc6815d orm a relational getOne or getById miss is a 404 DbEntityNotFoundError, and paginate types a join filter #Q2662 937ce66
Featuresrate-limit limiter.middleware() for $action, $job and $pipeline #E76 #Q2630 940547f rate-limit the $rateLimit primitive on $actor, consume and refund #E76 #Q2624 08d74a7 actor reclaim expired state on Memory, Redis and Durable Objects #E76 #Q2623 3924e13 actor jittered backoff between Redis CAS conflict retries #E76 #Q2620 bcbe530 actor state-derived expiresAt, envelope v2, expired state reads as missing #E76 #Q2618 87113ba actor a transition that leaves the state unchanged commits nothing #E76 #Q2621 020e91d actor read() returns the default without persisting it #E76 #Q2617 073ca90 core Alepha#name, the app's namespace: APP_NAME, then the baked build name, then "app" #E77 #Q2631 e9ef7db infra CLI Cloudflare deploy uploads through WorkerCloudflareAdapter, not wrangler deploy #E75 #Q2612 fdab08e infra Cloudflare credential from CLOUDFLARE_API_TOKEN first, wrangler only for login #E75 #Q2611 0f32065 cli scaffold explicit Cloudflare infra with init #E73 #Q2598 2aebcf4 cli expose deploy and infra commands #E73 #Q2597 2c56de0 cli replace public platform API with infra #E73 #Q2596 263224b actor generate generic Durable Object build metadata and provisioning (#E74, #Q2604) 5019c52 actor persist workerd snapshots through shared host runtime (#E74, #Q2603) b1da64b capacitor/cli alepha capacitor init --ota wires the updater, ota-api, the device client, the admin and a publisher key pair (#E70, #Q1315) 5e6112d actor commit distributed Redis transitions with exact-byte CAS (#E74, #Q2602) 7f5d0d2 actor define isolated synchronous reducers and Memory snapshots (#E74, #Q2601) 6205f59 capacitor/cli alepha capacitor release, sealed for the exact recorded native builds, with a dry run the admin uploads (#E70, #Q1314) 5a47c8b capacitor/ota-admin the OTA back office, channels, bundles, kill switch, rollback and device overrides (#E70, #Q1313) 689140e capacitor/ota the device client, acknowledged on a healthy boot, applied on background, cancelled by the server (#E70, #Q1312) f653095 desktop admission guards every request with a one-use bootstrap, a session cookie and origin checks (#E54, #Q2239) c1c68c8 capacitor/ota-api bundles, channels, exact-build selection, signed delivery and retention (#E70, #Q1303) 1a4b5eb desktop writable data and logs live in per-user folders, resources stay read-only (#E54, #Q2238) a97db34 desktop compile --desktop assembles, signs and verifies dist/<Name>.app (#E54, #Q2237) d51714f cli alepha compile --desktop compiles a shell and a bootstrapped server Worker (#E54, #Q2236) aeef364 capacitor/ota pin the updater, the Capgo v2 envelope and the wire contract, proven on simulator and emulator (#E70, #Q2524) 59b5617 desktop the shell owns one native window and supervises its server Worker (#E54, #Q2235) d3f91ec desktop a Worker host owns startup, readiness and graceful shutdown (#E54, #Q2521) f95c2af api/payments saved cards, setup sessions and off-session charges, upstreamed from Club (#Q2593) 702aeee devtools group apps by repository and worktree, with git state (#E71, #Q2573) b1bb420 devtools refuse a foreign Host or Origin (#E71, #Q2591) ff8d1ee capacitor variants, several installable apps from one, behind a bounded identity writer (#E9, #Q2476) 1e6cfbb devtools npx @alepha/devtools, a standalone app listing every running app (#E71, #Q2572) 494766d capacitor icon and splash generator over sharp, run by init (#E9, #Q2563) 7580f7e capacitor native chrome, splash on the first settled screen, back button chain, safe areas (#E9, #Q1311) 55d220d cli alepha build --inspect plus ALEPHA_INSPECT=1 makes a production build inspectable (#E71, #Q2570) 46b1119 capacitor alepha capacitor dev, the app on a phone or emulator against the Vite dev server (#E9, #Q1307) efb2826 inspector public client, discover() and connect() for third-party tools (#E71, #Q2571) c03f3af inspector dead runs stay in the registry while their logs exist (#E71, #Q2569) 9a9d27d capacitor custom-scheme deep links, cold and warm, and a router initial-URL resolver (#E9, #Q1867) 5e519d3 inspector serve the inspector over a per-process Unix socket (#E71, #Q2568) 197254b capacitor native token custody behind a ReactAuth transport seam (#E9, #Q1309) af0ca61 inspector run registry in ~/.alepha/run/<runId>.json (#E71, #Q2567) 9a1615d inspector move devtools' server half into alepha/inspector (#E71, #Q2566) 44f0a1c server/cors CAPACITOR_ORIGINS, the two WebView origins of a native app (#E9, #Q1304) 9e6adc1 react/router boot health, a once-per-boot committed-screen outcome, and an opt-in offline boot (#E9, #Q2523) e63a34b capacitor native providers with web and memory fallbacks, and an app-wide API origin for host-less clients (#E9, #Q1308) 025bd7e capacitor alepha capacitor sync, build and open, with the dev-residue guard and build records (#E9, #Q1306) 773b826 capacitor @alepha/capacitor package, capacitor() plugin and alepha capacitor init (#E9, #Q1305) 73714fe cli alepha build as an injectable pipeline, with a lean app-shell mode (#E9, #Q2561) 1d8a9bc Bug Fixescli migrations create finds the ORM by name, so a saas scaffold freezes every table, not alepha_sequences alone #Q2641 0062384 cli a breaking commit of any type reaches Breaking Changes, so refactor! and chore! breaks are no longer dropped #Q2640 8978ff8 api/users bound the login audit rows written before the password compare #Q2622 26629c5 cache Redis and KV caches live under <alepha.name>:cache:, and clear() stops wiping every app's Redis cache #E77 #Q2635 b1aa762 infra API upload binds services and hyperdrive, refuses wrangler keys it cannot send #E75 #Q2615 e50412b cli deploy installs wrangler as a development install, so devDependencies survive #Q2610 b8c23ed cli validate published infra workflows #E73 #Q2600 9a97917 actor preserve Durable Object lifecycle in both deploy transports (#E74, #Q2608) 04279eb capacitor/ota device acceptance fixes, a foreground check for the kill switch, a builtin answer the updater accepts (#E70, #Q2553) 12b25b0 react/head global heads merge htmlAttributes and bodyAttributes in the browser, as the server's early head does (#Q2594) 2ae9402 capacitor dev allows cleartext to its host in an Android network security config (#Q2525) c1bbdc1 react/router a push from the offline screen boots again (#Q2525) 5b12c10 capacitor leave the config.xml cap sync writes out of the native fingerprint (#E9, #Q2525) 4ad1d11 ui identifier fields keep what was typed; the test app's account button signs in (#E9, #Q2525) b9ffd60 react keep the offline and failed-start screens clear of the status bar; let the test app's debug build trust a user CA (#E9, #Q2525) b4306e6 capacitor keep the emulator's adb reverse alive, open a cold link that arrives before the first screen (#E9, #Q2525) 5d9d2c0 email CloudflareEmailProvider keeps the binding's messageId, so delivery events find their receipt #Q2560 d4d3fd2
Featuressigil the lore binary carries its own alepha, and alepha is an optional peer #Q2579 ed0e5fa platform platform({ project }) names resources <project>-<app>-<env> #Q2575 f6f0cc3 orm every update bumps db.version(), save() works on a copy, a mismatch answers 409 #E69 #Q2544 aeff06d cli on D1 with replicas, a request that can write reads from the primary #E69 #Q2558 8ef98a9 orm DATABASE_TRANSACTIONS=false runs specs without transactions, as on D1 #E69 #Q2545 6967a9f ui MyOrganizationInvitations is a DataTable #E68 #Q2534 ccb618b ui account Connected apps is a DataTable #E68 #Q2533 933cc2b ui account API keys is a DataTable with create in the toolbar #E68 #Q2532 1d6df0f ui account Sessions is a DataTable #E68 #Q2531 1466ba9 ui the account area is a root NavShell with a floating sidebar, like AdminRouter #E68 #Q2530 9839b4d ui the admin Files storage card toggles its bar between share of the quota and share of the total #Q2500 c460ea3 ui the notifications dropdown's header sits on the chrome surface with its bevel #Q2497 0fe0bfc ui the filter bar centres its +, names it when alone, gives every filter an icon, and lets options follow other filters a639e99 ui fields fill the row on mobile, the clear button floats over the value, and selects carry an icon 0768b04 cli alepha db migrations create formats the migrations it generates with oxfmt #Q2495 d5827c3 ui Button takes Blueprint's intent x variant, and an href a498181 Bug Fixesui ControlDate reads the current year from DateTimeProvider 44e9376 api/parameters a shared load whose request was canceled no longer hangs every later get() #Q2588 82f2f10 orm raw SQL joins the open transaction on Postgres; ownership transfer is one guarded statement #E69 #Q2556 8a39621 ui MFA recovery codes close only on an explicit confirmation, and can be regenerated from the account page with a code #Q2518 b80f9c0 ui the DataTable bulk bar draws no stray border on its buttons, and its close button is minimal #Q2499 c6b364f cli gen changelog puts an `@word` in a code span, so a release mentions nobody #Q2494 b63d90a ui the active segment's count is readable on the blue primary 6e98f72
Featureslore Home is a greeting, a search across every project, and one column of recent projects 09ce6dd lore a first alepha platform up creates the Lore copy, on the estate one shared rule picks #E67 #Q2487 e613fad lore platform status and down for a Lore copy, refusing an ephemeral one #E67 #Q2486 ba129a8 lore a LoreAdapter, so alepha platform up builds, pushes, seals the secrets and deploys through Lore #E67 #Q2485 c79f70c platform an environment names its adapter by importing a factory, not by a string #E67 #Q2481 328aefc cli lore releases cut + changelog, and alepha test --shard #Q2479 4023ebf lore a Bay deploy names its copy and sends the stored project segment, so a project rename no longer moves a Bay instance #Q2475 7d413c3 lore folio_create files an epic's folio beside the epic's other folios when no directory is given #Q2474 3438575 lore a copy's Cloudflare name is stored at its first deploy, so renaming a project moves nothing #Q2473 33a50aa lore the Environment tab is a DataTable of secrets and variables, with name autocomplete and a .env import #Q2467 #Q2468 4d72f3e lore artifacts show every runtime they carry, named workerd rather than cloudflare #Q2463 425595f lore one archive is one registry row carrying its runtimes, and a deploy matches any slice #Q2462 59de2c8 bay Bay reads its slice from runtimes only #Q2461 648a614 cli manifest.json v2: runtimes is the only runtime declaration, secrets and variables replace env and publicVars #Q2460 #Q2465 9615d1b lore an app instance's breadcrumb reads "shop / production" as one crumb #Q2466 5fcce40 payments-stripe subscription checkout takes a trial, Stripe Tax and the VAT number; a subscription can change price (club quest #446) a0c1e0f lore `lore apps redeploy` puts a stored build on every copy whose env ends with a suffix #Q2458 f0aa1d2 api/users createUser takes a password, checked before anything is written #Q2451 0717e16 cli alepha dev creates .env from .env.example when it is missing #Q2450 b0890e5 ui useInviteOrganizationMember forwards metadata #Q2448 9141405 cli retire --target, the build is described by what it produces #E63 #Q2441 91f4758 cli alepha image --compile, and the libc pairing that actually works #E63 #Q2434 314124b security $owns gates a resource the request does not name #Q2446 49e0a21 cli alepha image, a Dockerfile you own #E63 #Q2433 5d5adad lore MCP tool calls get a chart, which the store is what makes possible #E65 #Q2443 7057dca cli alepha compile becomes its own command #E63 #Q2432 86cd158 cli alepha pack moves to zstd, and the archive root becomes the contents #E63 #Q2431 52ffd06 lore backfill fourteen days of activity, once, guarded by a row #E65 #Q2440 02f7d61 lore the activity dataset, recorded beside every project audit row #E65 #Q2439 2cb8b9c platform the Worker uploads the workerd slice and nothing else #E63 #Q2429 466261e cli alepha build emits one server slice per runtime #E63 #Q2428 b5aee92 bay the slice layout, the flat archive root and zstd #E63 #Q2427 2e2fb16 cli the manifest declares every runtime slice it carries, in declared order #E63 #Q2426 e43bfd3 security EffectivePermissionsProvider, one effective permission set 30b9c8e lore the daily sweeps declare retry, so a failed tick costs 15 minutes #Q2419 a6d7826 ui every table gets the Funnel menu, and Lore opens on Status #Q2416 3551d6b lore Home momentum is fourteen bars, not a curve #Q2415 035c8f2 lore Home is a grid of rules, and its activity reads as events df1c6df ui DataTable gains `flat`, and its head closes with one rule 5db11cd ui one border colour and one hover fill across the kit fdd9540 ui the storage tile reads once, and a segment opens a panel db1b03a api/files the total storage quota defaults to 10 GB 60df22b ui the admin console and the account area use ButtonSettings fac0567 ui Admin Files shows one storage tile, used of the quota, a bar by bucket (#Q2412) 9bd7516 api/files a total storage quota across every file (#Q2411) 8919869 lore Home filters projects by ownership and activity, and New Project moves to the header a38aa12 ui ButtonSettings folds language, theme and display mode into the account menu, and Lore's header uses it b653b6e ui DataTable gains a collapsible summary panel and a help icon (#Q2409) 54e0e8d lore read through D1 replicas, with the Sessions API (#Q2403) f5fb8ad ui DataTable appends added filters, marks the search in cells, and counts bulk actions (#Q2407) 8a3440f lore turn on Smart Placement for the production Worker (#Q2403) e95b440 lore rework the home page a79bc1a ui DataTable chrome, corner, padding and footer options 38b381a cli flatten the dev server's DevTools button ccd6faa lore add epic activity tab #Q2399 08062de ui showcase organization workspace #E62 #Q2383 75607e9 ui add organization rank management #E62 #Q2381 73bcc4f ui add organization invitation screens #E62 #Q2380 94b2db6 ui add organization members screen #E62 #Q2379 c602505 lore home is a projects table with momentum bars and an activity panel (#Q2402) 9608dad lore backfill organizations (#E61 #Q2375) b0937f0 lore attach projects to organizations (#E61 #Q2374) ffc719f security add organization key to owns gate (#E61 #Q2373) 6bd21d4 payments-stripe a connected account can sell subscriptions: checkout, schedule an end, read and cancel (#Q2396) 780ea1e lore download stored builds from the artifact table (#Q2393) 1a55cae testing publish the jsdom browser project as alepha/testing/vitest (#Q2389) 258a039 testing publish the e2e port allocator as alepha/testing/playwright (#Q2389) 7f566e5 lore the epic aside opens on an ID row and a Name row, and drops its truncated heading (#Q2352) 50e957f lore the epic page offers Edit only while the epic is a draft or ready (#Q2353) f665416 lore the project Artifacts table deletes artifacts, from a checkbox selection or a row's menu (#Q2356) 76c2031 ui/table filter chips read "Status: Draft, Ready", "N values" and "None" 01e5fcb lore one ActionErrorToaster at the root, so a failed request toasts on every page (#E59, #Q2317) 3dad06a ui/table filters.schema is deleted, and the table's filter bar becomes internal (#E58, #Q2321) 1cb75cf ui/table the filter bar handles date ranges, a z.dateRange() field is a date filter (#E58, #Q2315) 4181abb ui/table the filter bar is AlephaTable's default, drawn from fields without render (#E58, #Q2314) 538543b ui/table AlephaTable takes filters.fields, a flat record where each filter carries its own schema (#E58, #Q2313) ac85544 lore an agent writing as the key's owner can @mention that owner (#Q2348) 29ed42a lore the Artifacts table's Pushed column reads as time ago, with the exact datetime on hover (#Q2335) b7bed26 lore an artifact's commit links to the project's repository, through the one CommitLink the quest rail uses (#Q2336) 181d890 lore a blight's Page cell links out when it holds an http(s) page URL (#Q2337) 789c0e4 lore the Epics bulk bar marks a selection ready when every selected epic is a draft (#Q2339) 2189a8d lore a connected app reaches the project member groups and nothing under admin (#E44, #Q2307) 93d34c2 api/keys a key can be restricted to client addresses and CIDR ranges (#E44, #Q2064) a60f0eb ui the admin key table mints through the shared create dialog, and filters and shows keys by status (#E44, #Q2062) 9bbb542 mcp advertise MCP 2026-07-28 alongside 2025-11-25 (#E57 #Q2305) 4a0dfc6 ui scope a key with the permission matrix @alepha/ui already has (#E44, #Q2059) 1711850 ui the account key panel grows an expiry select, a status and a rotate button (#E44, #Q2060) b1a38b3 mcp modern requests validate their headers strictly, unknown methods get 404, DELETE gets 405 (#E57 #Q2304) 1e450d1 api/keys an audit trail for the api-key type (#E44, #Q2065) 60aea34 mcp modern results carry resultType, serverInfo and cache hints (#E57 #Q2303) 26c8687 api/keys warn a key's owner before it expires, once (#E44, #Q2063) 6294b01 api/keys a key carries its own permission scope, capped twice (#E44, #Q2058) cf8e6a6 mcp serve server/discover and decide the protocol era per request (#E57 #Q2302) 63af9f4 command,lore help as a word, and lore -h opens with the conventions no single command can teach (#E45, #Q2095) 9c45fe4 api/keys GET /api-keys/options, the expiry policy and the caller's permission ceiling (#E44, #Q2057) 3c59807 api/keys rotate a key, a new secret on the same row (#E44, #Q2056) 2eea91d ui a job opens on its own page, with executions that sort, filter and delete, and a drawer for one run (#E55, #Q2279) 27153bc lore the CLI closes the work loop: quest accept, quest objective set, and --waive / --commit on quest complete (#E45, #Q2300) ec1b4db api/keys a retention window for dead keys, purged in bounded batches (#E44, #Q2055) ce9d7e0 bay Bay applies _headers to the files it serves (#E49 #Q2171) 0ed629d server the app's own static server applies _headers, from disk or from the compiled binary (#E49 #Q2170) 600e9ec cli the build writes dist/public/_headers from helmetOptions, the author's public/_headers and the hash rules (#E49 #Q2169) b0d8f6c api/users $realm stops gating jobs and audits, a flag gates a surface (#E44, #Q2096) f363b28 ui the admin jobs list shows the type as an icon, the retention rule, blank schedules and more filters (#E55, #Q2278) f821b1a server one _headers reader in TypeScript, and the conformance fixture Bay shares (#E49 #Q2168) 41b559f cli alepha init scaffolds @alepha/ui's module paths, and e2e-cli builds a saas scaffold (#E50, #Q2178) 57da7b3 lore lore project, quest and folio, ten commands over the actions Lore already has (#E45, #Q2094) 33bb370 ui admin pages are titled "Admin - <Page>" in the browser tab (#E55, #Q2277) c13b588 api/keys derived key status, a list that shows dead keys, and a name a revoke frees (#E44, #Q2054) febbeea api the job naming convention is enforced: name and description required, validated, checked (#E55, #Q2276) 9e4dad1 lore the CLI's output renders for a human by default, and as one JSON document when asked (#E45, #Q2088) 76d42cd lore the Releases row menu offers the next versions by tag (#E56, #Q2286) 53613ea api framework and commerce jobs take system.* names and a description each (#E55, #Q2274) 2ef1a45 command,logger every Alepha CLI logs to stderr, so stdout carries only what a command prints (#E45, #Q2299) 889253e security an OAuth grant's scopes narrow its token (#E44, #Q2307) 4fe4747 api the admin jobs API pages, sorts and filters executions server-side, and can delete them (#E55, #Q2273) 1072b76 lore ReleaseCreateDialog takes a pre-filled tag and a suggested placeholder (#E56, #Q2285) eb7c619 api $job retention v2 keeps history by how often a job runs, expires it by age, and shows the rule (#E55, #Q2272) ceabb04 command,lore refusals exit with a code that says why, and a sentence naming the fix (#E45, #Q2089) f5e9a10 security an OAuth access token is not a session either (#E44, #Q2306) c072743 lore releaseBumps, the frontier rule for the next release, as pure functions (#E56, #Q2284) d3e3824 security an API key is not a session (#E44, #Q2297) efb1258 command @file values on flags that opt in, and array flags that repeat (#E45, #Q2086) 13da11a lore bulk delete releases from the checkbox selection (#E56, #Q2288) eedceaa security every permission reader honours permissionScope (#E44, #Q2075) 79695b1 api rows of a job that no longer exists are purged, and the internal crons become system.jobs.* (#E55, #Q2271) f17e3e1 security permissionScope caps a credential below its roles, in SecurityProvider (#E44, #Q2052) 9039103 api $job priority is removed (#E55, #Q2270) cce59af api/keys expiry presets and a maxExpiryDays policy the service enforces (#E44, #Q2051) 9e7d5a5 lore delete a release from the Releases row menu (#E56, #Q2287) 9faf19e lore the quests list compares: status is / is not, tags any / all / none of (#Q2310) 5daa352 ui AlephaTableFilterBar puts the add-on-demand filter bar in AlephaTable, and filter rows wrap (#Q2308) 651b4b6 ui the showcase filter bar adds filters on demand, with a staged clear/remove button and operators (#Q2308) 315a386 cli the devtools launcher is a conic-gradient dial (#Q2293) 7939ba5 cli alepha init no longer scaffolds @alepha/devtools (#Q2280) b95c137 api the default realm is named users, not default (#Q2264) c70e8dd lore a quest is to do, in progress, on hold, shelved or completed (#Q2269) c44008a lore a release's Artifacts tab lists one row per app, format and runtime, and workerd reads cloudflare (#Q2267) ed1f2b3 lore an epic starts as a draft, where it was planned (#Q2269) d31e780 ui the admin Parameters History panel collapses to a rail, the one Lore's folio panes use (#Q2265) 334348a lore Spotlight finds epics, releases and feedback by number, typed (#E52) or bare (52) (#Q2228) 359ead1 ui admin Files sorts by name, uploader, size, type and bucket (#Q2232) d301c13 ui admin user, job and payment statuses are tinted chips with a glyph (#Q2247) e50d1fe ui the account button draws the viewer's avatar in every @alepha/ui shell (#Q2229) 06fad62 Bug Fixeslore the quest rail hides a reminder that cannot be set, puts Tags on its label's line, and holds every row to one height #Q2424 aaeff9e api/oauth the purge job keeps any client that ever received a token, and an unknown client_id gets a page saying how to reconnect #Q2413 4669099 cli a vendored package builds under a strict consumer tsconfig, and a failed build fails vendor sync #Q2490 1a093d6 platform queue and cron invocations read D1 from the primary, so a job claimed right after its write is never dropped #Q2478 6c0499e lore the job sweep runs every five minutes and calls a row lost after one, so a lost queue delivery waits ~6 min, not ~20 #Q2478 65695f2 payments-stripe a subscription Checkout made can change price, off the inactive product Stripe created for it (club quest #452) 2d88f75 server tolerate a socket without setNoDelay, so a node build streams SSR under Deno #Q2456 a79c846 api/users refuse a realm the users API would otherwise drop #Q2453 256e77d crypto an empty APP_SECRET counts as unset #Q2449 6dc18f3 lore the extractor skips the ./ root entry every real tar writes #Q2447 543c6de lore the missing-runtime-label refusal names alepha image #E63 #Q2441 e0ca30d devtools build:ui follows the retired --target #E63 #Q2441 511c6c5 cli alepha compile removes every slice's wrapper, from the manifest #E63 #Q2432 3344642 cli every remaining reader of the flat dist/index.js follows the slices #E63 #Q2430 6bce346 security EffectivePermissionsProvider stops escaping its module, and its spec stops importing itself #Q2444 e58a122 lore the locale catalogs stop pinning 264 kB into the Worker's boot graph #Q2425 62d5a8b lore quest reminders sweep hourly, so 50 a run stops meaning 50 a day #Q2418 590e758 lore SigilJobs stops hiding from grep behind a literal NUL byte #Q2423 51e3353 lore the mobile table e2e reaches Reset through the Funnel menu #Q2416 d8823a7 lore the project header's create button takes the icon cluster's gap d8a8bc1 ui text fields keep their width for text until a clear button is drawn, and text filters fit their placeholder (#Q2408) b5b3843 api/analytics the forward drops rows of a deleted sigil instead of failing the rollup (#Q2404) 987ea3c orm,api/analytics the hourly rollup stops failing on D1 (#Q2404) 949070b ui,lore an avatar whose picture is a URL draws the URL, not /api/files/<url> (#Q2406) d034e99 mcp a tool that refuses a call logs at warn, so real tool failures stand out (#Q2405) d361435 ui small and minimal selects lose the clear x and hover border 23f1352 react lay an animating page out as a column 8343755 lore route visitor cards by app instance #Q2395 00e1d71 cli db migrations create loads the app through Vite, and alepha drops tsx (#Q2400) 811581a api/payments an embedded payment records its PaymentIntent, so Stripe's webhook settles it and the sweep cancels it (#Q2398) 8560efa api/oauth show the client claim on device approval (#Q2391) b072a05 api/payments the stale-intent sweep reaches Connect sessions on their own account, and a capture after expiry still settles (#Q2397) dd891c9 payments-stripe a scheduled subscription end is never prorated (#Q2396) 94918f8 api/oauth authenticate confidential device clients before consuming codes (#Q2390) 44097b8 api/parameters refresh the writer cache on every save (#Q2359) 244402d ui the table footer, the date controls and the admin tabs speak the page's language (#Q2392) 88b2c96 api/oauth the device grant binds its session to the client it started as (#Q2388) ccd0dac lore the lore CLI refreshes an expired login instead of asking for lore login again (#Q2387) 34555fc ui a segmented filter loses its inner frame and sizes its segments from their labels (#Q2361) 1cacc30 ui $pageNav's JSDoc drops its two em dashes, so check:docs passes again (#Q2357) 382b9bf ui Segmented honours the arrow keys its radiogroup role promises 6b1bcf2 orm insertBatchSize counts the values the driver binds, not the caller's keys 0aefab9 core getDefault stops reading zod's own .default method as a default value d438629 orm aggregate aliases every expression, so two conditional sums on one column stop collapsing cab2493 ui shell exports $pageNav, so an app can hang a nav page off its own layout fef27a8 react a page loader that refuses logs at debug, so the 5xx underneath stay visible e23461d lore a mention at the end of a sentence reaches its member, and the full stop stays after the link (#Q2350) 1d42001 devtools Rows keeps its table rail and grid when a row opens, with the record nested under the table (#Q2351) fdc514c lore the wiki-link hover card follows its link when the folio scrolls, and closes once the link is out of sight (#Q2354) 1f98e6e lore a wiki-link resolves any quest or folio by its number, and the [[ picker closes a token once (#Q2355) 3795299 react an error its caller handles still reaches Sigil, but no longer toasts (#E59, #Q2345) f40e04e react/router a $page remounts when its params change, and the Lore folio workspace keeps its tree in the /folios layout (#Q2349) 32c6129 react/ui a prerendered AppShell hydrates with the sidebar state it was rendered with, then adopts the cookie (#Q2347) 160d23e cli gen changelog escapes a subject's emphasis markers, so oxfmt stops rewriting CHANGELOG.md (#Q2292) 0733fde ui the calendar marks today with a bar under the number, not the fill a picked day uses (#Q2334) 1e3bd43 sigil a form refusing what a person typed is no longer filed as a crash (#Q2343) 53b3982 lore deploys.run declares a timeout, and the deploy timer cannot outlast the queue consumer (#Q2344) 8bc9747 react/router isActive compares paths decoded, so a %24 URL and a $ href are the same page (#Q2338) 8c68ee8 ui ui.alepha.dev sets its theme list on configure, the one hook its prerender runs (#Q2341) 193e31b api/oauth a client may register a loopback IP redirect, matched on any port, and a refused registration answers 400 (#Q2342) 53f89e6 cli prerendered pages are written under their decoded pathname, the name every host looks up (#Q2340) 278be48 react/i18n l() is typed string, and both l() and tr() declare it (#Q2312) 7a04c1a mcp McpUnauthorizedError and McpForbiddenError leave the JSON-RPC reserved range (#E57 #Q2309) 5b86fa8 cli a Docker image built with --image carries dist/public/_headers and its .br sidecars (#E49 #Q2172) 4062317 api/users bound the session purge before it runs where it never has (#E44, #Q2097) 0faaf8d platform Lore deploys send _headers and _redirects as asset config instead of publishing them (#E49 #Q2167) 83d7fb9 mcp a 2026-07-28 probe keeps its fallback 400, pinned by a spec and logged at INFO (#E57 #Q2301) 2d685fb ui the table e2e finds the showcase search by its plain "Search" placeholder (#Q2308) 79e2efd ui the filter bar fills a date trigger like every field beside it (#Q2295) b066978 lore the prose-face assertion targets the prose root, not the paragraph (#Q2294) 6dd2731 lore themes get a heading face that is actually drawn (#Q2294) c6fb96e ui the clear x follows its trigger's edge, not the field's (#Q2283) 2b8b9c7 ui the 8px page frame belongs to the table pages only (#Q2291, #P2194) b6be6e9 ui the date controls draw the kit's field trigger, and clear like a select (#Q2282, #P2197) 6ebdc48 security $basicAuth refuses an empty password (#Q2281) 9550f53 ui admin and Lore project pages frame their content at 8px, p-2 instead of p-6 and p-4 (#Q2266) 24428fb ui admin Parameters reads System, Projects and Deployments, and no stored key is renamed (#Q2263) 2a4fc17 api/users removing an avatar clears the row's picture, not just the blob (#Q2268) 5724382 ui admin filter bars share FilterSlot's width and the plain "Search" placeholder, like Lore's project pages (#Q2231) 6744ffa lore every link that leaves Lore carries the trailing external-link icon (#Q2222) 48bf2d1 ui the admin users list and detail page show each user's avatar, and the initial only when there is none (#Q2246) 667307e ui the admin Files bucket filter lists bare bucket names, without file counts (#Q2230) c3dc602 ui the password reveal button presses 1px like every other Button, instead of dropping by half its height (#Q2219) 00ee69d react let a query cache key serialize past 255 characters (#Q2262) a01ca39
Featureslore a first deploy gives a copy APP_NAME = <project>-<app>-<env> (#Q2248) 222cbf6 lore `lore login` asks for a `cli` scope of its own (#Q2244) 2a1efdb lore the epic pages offer Mark as ready and Back to planning (#Q2223) c1c500f lore an epic is planned, ready, in progress or completed (#Q2223) b772d1c lore lore secrets sets a copy's secrets, one by one or from a dotenv file 9627a7b cli BuildCompileTask, one binary that carries its public/ (#Q2209) eff53c8 cli --compile [name] and build.compile, for bare as well as docker (#Q2208) 264c001 react serve the files a compiled binary embeds before any public/ on disk (#Q2207) 8c28986 server EmbeddedStaticFileSource and staticEmbeddedAtom (#Q2206) 07cd3ac server SPIKE, serve public/ from inside a bun --compile binary 7431740 lore publishing the default release hands it to the next one e1b9c83 payments-stripe tag a connected account, and read the tag back e7fa0d8 cli a vendoring project can keep its packages as source c7e377c cli a *.client.tsx module does not exist on the server 1515c26 cache Cloudflare defaults to the database cache, not KV 9940992 sigil read the session for visitor identity, and an auth dimension 72c89c0 lore the robot menu reaches the Blights page 31e32cb lore a fifth prompt kind, looping the feedback inbox 98b3ffd lore tell a reporter what happened to their report abbd301 ui one relative timestamp, with the exact date on hover bda440b command bring back $command.exclusive, swept on pid liveness 2fc1f42 cli delete the full verify lane and make CI the gate 89ca723 lore the docker pull line on the release page, and the release job that records the image f09eaf4 lore the dashboard takes the project root, Activity moves to /activity (#E46, #Q2104) 8fba07d lore every surface that reads a variant learns about format 9c2c60c lore the project board's empty state (#E46, #Q2102) e97f141 lore the project dashboard page (#E46, #Q2103) 489760e lore lore artifacts push-image, a sibling verb with no runtime and no arch flag 2757335 lore ArtifactService.pushImage, its endpoint, and the impossible row it refuses 8dc4d50 lore completion for one tag (#E46, #Q2108) f9e8019 lore the release progress card (#E46, #Q2107) dd159db lore a registry client that reads an image's own claims, and refuses what it cannot e620742 lore the epic progress card, and the scope kind reserved since #E4 (#E46, #Q2106) b5f9caf lore the project dashboard controller (#E46, #Q2101) 491ac6a lore artifacts gains format and reference, and the deploy gate stops picking an image 810e41a lore the On hold card, and the number it must stay inside (#E46, #Q2105) fd8d986 lore `lore deploy`, and the environment taken from the app's own rows a51b810 ui AlephaTable persists its facets one at a time, so Apps can keep its columns 402a3c2 lore MCP reads and moves the default release 77af1a0 lore the default release in the UI, a chip that is not a state 5dd9847 lore an epic begun with no release takes the default, and cascades it ef3fbaf lore a completed quest lands in the default release, unless it already has one 4ad7d8d lore setDefaultRelease, one statement and the three refusals around it 6aa0f3c lore the resolve path learns epic and release (#E46, #Q2140) 394fefd lore the metric catalogue learns which board may hold a metric (#E46, #Q2100) 4e438e4 lore releases.defaultSince, the column a project's default release lives on 6ef054f lore a dashboard card can belong to a project (#E46, #Q2099) 514a4e9 cli the generated Dockerfile declares its runtime as a LABEL 1c9608e lore the Apps table's Address is a link, the way the header already is 64f7539 core z.dateRange(), a date range as one field and one control 8153a0d core z.dateRange(), a date range as one field and one control 4c1fc58 ui chrome surfaces wear the table header's fold bffa6fc lore a folio is encrypted from the tree, where the reader decides it 5663faa platform a deploy with no domain answers on workers.dev, and says where cdda054 lore a deploy says how far its asset upload has got 9987444 lore a release is filled from the work, not from the release 0622948 lore a release is set from the row, on both tables 18e8e51 lore a deploy that stops reporting is closed by a sweep 8653493 ui an account area can say it does not offer a page 87816e5 lore Reports breaks quests down by tag, beside area and priority 9319811 bay a Lore deploy names its instance <project>-<app>-<env> 05da3f6 lore held quests get a sidebar entry, a count, and a working link 9e00188 lore the artifacts empty state links the guide instead of printing it 568d9b2 lore a copy can declare at creation that its data goes with it 5212ef0 bay an instance is one path segment, so a caller can widen it 1ab642a lore a URL opens one feedback item, and the quest badge is that link 6556ff8 lore destroy takes the queue and the cache too, keeps D1 and R2 3b9eedf lore a deploy names its resources <project>-<app>-<env>, and destroy keeps the data 402d07d lore destroy the resources a copy's deploys created b0d4c0b lore a deploy records what it provisioned in the estate 229a663 api connected apps are apps, not authorizations cbeac47 lore a deploy gives a copy the sigil its build asks for 631732b lore the registry keeps the manifest it already read bebe369 lore the feedback footer leads with the primary and ends in an icon 2ba9c0d lore /account/projects says how many projects you own against the limit 791d5ab lore the Agent Prompts menu gets a caret, icons and a line per item ba7213f lore mint the Cloudflare token from a prefilled link 4e96e8b lore a phone header keeps the work controls and drops the settings ones 10535eb lore the create-estate dialog gets labels, icons, room and a real footer 875ed8c ui the account button can show the viewer's own face dea7152 lore a copy can be given its sigil as it is created 8d3c92b lore a feedback screenshot opens in the shared attachment lightbox ae4d1ca lore Estates takes the API keys layout, create row included c06cb55 lore a deploy carries the two variables no operator should have to set 64a3f00 lore the empty space under the folio tree offers a folio or a directory 05fbd3c lore the folio tree closes from its own header, and reopens from a rail 3dbdb9a lore @ autocomplete in the comment editor 233e874 lore the quest comment composer is a LoreEditor like everything else 62d49bc lore the Apps table gets three more columns, hidden by default fb63b96 lore a created copy carries its address, which is what returns a URL 2d6ce7d lore @alepha/lore/client, for an app that provisions its own copies 62a073c lore an estate you own opens its Bay console from the project's list 3a9623a lore ship the switch, and turn it on where an estate is already lent 46585cf lore deploy over MCP, with no way to name an estate 5065bf8 lore the Deploy tab, and a Version column that knows what runs 287d54a lore a deployed copy's environment, sealed at rest and never read back 1e09239 lore a project holding no rank rows is given the three presets 1cb7bb9 lore lore apps deploy, where the tag decides whether it builds 15a76b9 lore lore apps build, and the line --env must not cross 804a559 lore fast rollback via the Cloudflare version id 20c62a7 lore a quest can be held, with a reason, and Held is a real status 06d1e14 lore refuse an artifact the estate cannot run f030f64 lore the deploy gate, and the bounds a run lives inside f2bfdf4 lore deployments, the row a deploy is followed through 4822dc7 lore the Apps table filters on app, env and status 54efa0b lore a deploy runner that drives orchestrator.up() inside the Worker 75da050 platform a Cloudflare adapter a Worker can bundle 60267c5 lore MCP answers what an agent may do, not whether it is the owner 42c3ab9 lore assign a rank, and hand the project on bf1844a lore the rank matrix, and the two built-ins that are not the same kind d15e656 ui the permission matrix, a table neither application owns 6995bee lore every write control in the project UI asks the rank first 281f2ef lore the UI asks the rank instead of asking who created the project c2249e7 lore the notification preferences page d5c9fb7 lore Lore owns the notification preference f1b167e lore the /:projectSlug/inbox page and its sidebar entry cf9bdcf lore the project loader seeds both inbox counts 8ccbe60 lore the bell rides ProjectView's before slot 962f990 ui ButtonInbox, the bell and what is behind it 5736ec5 lore ProjectRankResource, and the three presets a new project starts with c8c225c lore unpack an artifact safely, and stop the build reading the host 4e91e2e lore a member's mention in a feedback thread reaches a person ed0c33c lore the whole permission vocabulary, declared once with its labels 73a5c40 lore Agent Prompts > Work on it on the feedback detail panel bf89988 platform deploy a Worker to Cloudflare with no wrangler process 0d3bddf lore publishing a release tells every member dc60490 lore members.rank, and the backfill that must never lock an owner out d78aaba lore Agent Prompts > Work on it on both quest tables and the quest page 5b2c6d3 lore a mention in a quest comment reaches a person 44fb644 cli keep source maps out of the artifact, and beside it instead fdd5da5 api alepha/api/ranks, a permission set held inside one scope 900dfde lore the Agent prompt editors on the Work settings page 7ac0faa lore the two inbox templates, and who an address belongs to 56cb357 lore Agent Prompts replaces Review on both epic surfaces 54ea20d lore resolve app and env for the deploy commands, and the project default behind them 63bee78 lore the agentPrompts option, the prompts atom and useAgentPrompt 24b2c39 api/notifications a third retention clock, and the orphan half of the inbox aede84a platform D1 migrations over the query API instead of wrangler 8b28b06 api/notifications the inbox read side, in the framework e9b0f86 server action.can() learns the scope it is being rendered in cffa4fb cli worker-safe entry points for the CLI build tasks and platform-lib 3db24d0 lore project_prompts, the table and the owner's write path 972f398 api/notifications the inbox, as the third channel 8f48924 security the permission registry reads back as an ordered catalogue 52a698a lore four default prompts, one renderer, seven placeholders 66baa30 api/notifications a seam that turns one contact into a user 8e66bd5 security $owns gains requires, the seam for what a member may do 9a19737 api/notifications a channel can decline before anything is rendered 91f3606 ui a row action can be a group, one level deep bcc77d6 ui the checkbox lights its border under the pointer 3233d9b ui a link becomes a filtered table, and a filtered table becomes a link 4a138bb ui a disabled button says so with the cursor 43aa078 lore the dashboard, the feed and the palette compose from capabilities 088d322 lore project_context omits the sections a project does not own 5bbe3d3 lore Apps has a baseline and two options, and Quality joins it bfb70d2 lore nine Features pages become four capability pages d78a4c3 ui a palette with a footer, bevelled buttons, and two controls that stop lying e506f44 lore the switches move to the console, and the drawer keeps cloudflare 00ff199 lore the queue gets a page, filters and the names behind it 9819193 lore the sidebar and the palette derive from the capability map d89ffe0 lore the buttons, and the true thing at each step 56db80c lore the instance page, and the log payload both halves agree on 9b93b16 lore the apps table, and the row nothing else in Lore surfaces 2e2cda9 lore the series finally has a reader 936eda2 lore route guards and the create menu read the capability set e703579 lore the overview says what the machine has, in bytes 613d0df lore the wizard asks what the project is, then sets it up bf08a20 lore the bay console gets a route, a shell and a reserved name a819900 ui a Tree showcase block, three specimens deep f9a08b3 bay the machine answers a log tail, then acks 7cb31a5 lore a log tail, answered over the seam that already fits dd77f1b lore the folio tree rebuilds on @alepha/ui's TreeView 3c363cb bay one backup path, and it refuses an app with no database 4ff4c25 lore one gate for capabilities, reached three ways 23c5a7c bay a stop that survives a reboot, and a start to undo it f44a9b8 ui the pane resizer moves to @alepha/ui too a5cfe36 lore the estate dialogs ask for a Cloudflare token, and never show one back 34eea7a bay a query is answered with an inventory, even mid-deploy acb6013 ui useTreeState, the state a tree needs and nobody should write twice 4d1f303 lore the project resource carries its capabilities, and one controller writes them b754edf lore a refresh that asks the machine, without becoming a command 7e3b2e1 ui TreeView renames inline, and takes a menu as a slot 81efd50 lore the owner's read, with the reconciliation done server-side 9574856 lore a Cloudflare token is proved at creation and asked again every night 64d1c47 ui TreeView drags and drops, when a consumer asks for it 37345f5 lore store what a machine reports, one row per estate 5506aba lore the inventory frame, pinned from both sides of the wire f122694 ui the controlled TreeView core, with the geometry that was earned 3a91d1c lore one declaration per capability, and the read that serves it de3415a bay the inventory goes out on connect, on the tick, and after a command eceadde ui the TreeView row contract, declared before it is built 43975f9 lore a Cloudflare account is an estate, and its token is checked before the row exists e9c5947 bay one implementation of the status arithmetic, for two readers d690d3c ui the tree model moves to @alepha/ui, generic over a payload e3ee857 lore a project's capabilities live in their own table febcbab bay the host gauge keeps the bytes it was throwing away a61795d lore an estate credential is sealed before anything can write one a74be12 ui the shell's nav groups open one at a time, and slide 73184b2 ui the showcase opens on a hero, and every page has a palette 426b6b0 ui bevels, two empty states, pointer cursors and a hover border df96133 lore the folio document reads at one of three sizes cf44c2a lore the Artifacts sidebar entry moves under Apps cbaa819 ui the Layout blocks become live specimens 8cc80d0 lore a folio directory whose name says what it holds gets a badge 3bde3eb ui Discord-style ||spoilers|| in MarkdownView 4305acc lore lore attachments push, and MCP stops carrying bytes d822267 lore MCP grows `app_instance_*`, and `sigil_*` keeps working d2d83d6 lore the sidebar stops listing apps 9da5f6b lore Apps is one flat list, Name / Env / Address 5c447e0 lore the instance page, where tabs are unlocks 77df77a lore the instance Settings tab, five rows over one instance edfae08 lore New app in the create menu, and the one create dialog 9b1ac67 lore a sigil is an unlock on an instance, not the app itself 300f63f lore Project Settings keeps a switch and the ignore rules f7c92dc lore AppController, and /apps/:app/:env as two segments 1aa1ce4 lore app_instances, the deploy target that holds the sigil 2fc4426 ui a page per screen, for auth, account, control and AutoForm 8b7cc9b ui a simulated viewport is a real one, and the preview scrolls alone 1b07611 lore an agent can attach a file to a folio over MCP 1c00679 ui AlephaTable column ordering, from the header and the picker d4d15b2 api/audits a burst of identical events coalesces into one row with a count 59b092e lore a project-level Artifacts page, between Folios and Releases 937256c ui one Showcase per page, filling the frame 05e6572 lore a repository link in the project topbar, when there is one to open b5adad9 ui AlephaTable puts its filters behind a button on a phone a247f8b ui bring back the props Showcase, six themes, and a tweakable shell e3501fb bay the deploy action pulls by command id, verifies, and deploys 8bf329c bay the host gauge, pushed on the interval Lore names 04d381b bay the action vocabulary is closed, and restart is its first verb 35dbfc8 bay one persistent connection, dialed to Lore and held open 8446467 bay bay connector set, show and clear enrol a machine as an estate 1f87934 lore the /account/estates page, and the admin list behind it d70899b lore the Release page gains a Flow tab, epics as clusters of their questlines b6e7609 lore the questline map gains drag to pan and cursor-anchored zoom 5d4c228 lore the artifact bytes and secret set a machine pulls by command id abd5939 ui add the payments admin block, completing the admin surface 7c52696 ui add the notifications, parameters, dashboard and analytics blocks 4c14da3 lore the estate gauge on the row, and its series in analytics 57e0a82 ui add the sessions, API keys and files admin blocks 86e95af ui show the admin users, jobs and audit blocks from fixtures 9875d8e lore the websocket a Bay estate holds open, authorized by its secret 7b873b0 ui add apps/ui, the component showcase at ui.alepha.dev 2fb6acc lore the estate command queue, built before the endpoint that carries it 0f36199 lore the Epics list can filter by release, not only show it 4c57422 lore lend an estate to a project, from the project's settings 020848b lore an admin action converts every stored reference to the typed grammar c60ae9a lore the epic page follows the lifecycle, two verbs and nothing offered that the API refuses 1afe5c9 lore estates, a user-owned deploy destination with a minted secret 07b475e lore the typed reference is what you copy, type and search for a1f0f6b topic remove @alepha/mqtt and the emqx test service 72811b8 lore an epic cannot conclude while a quest is unresolved 044a5c4 websocket $websocket and $room gain a pre-accept authorize hook that names the room 90c8fec lore a bare #Q12 in a comment links, a bare #12 no longer does 3560477 api remove alepha/api/workflows, the durable workflow engine 81c3b26 lore an epic cannot begin while its predecessor is not done 9ec3015 lore every screen labels a quest, epic, folio, feedback or release as #Q12 fdb60fa ui the jobs executions panel shows when a row is parked, its key and its payload 3e84060 lore setEpicStatus is a one-way ratchet, planned to active to done 6e6c84e lore feedback and releases are linkable as #P120 and #R12 b74d777 lore the plan freezes at activation, so quests attach, detach and delete only while planned e1076d6 lore accept, assign, complete, reopen and unshelve refuse a quest whose epic is not active 0321c57 lore EpicWorkflowService, one place for every epic phase rule and its refusal 05ec1a6 lore both link parsers read the typed #Q12 grammar, and the server skips code 70a5d28 api $job gains reschedule, cancelByKey and a per-job retry backoff 3194794 lore quest_list hides a planned epic's quests by default, like the UI 49c8344 lore Review opens the prompt for editing instead of copying it blind aa42ae2 lore hover a feedback image attachment to preview it 57c7340 ui thread the date-picker caption props through Control b59b53e ui let ControlDate offer month/year dropdowns and a year range c9a0927 lore App Errors becomes stats, on a series the aggregate table cannot hold 7a17fd0 lore Review copies an agent prompt for a planned epic f421953 lore the epics list gets the selection bar, with bulk delete and add to release f2dd21e lore an optional Epic column on the quests table, anchored to the epic 6a98c62 api/audits scope audit rows, and make Lore's Activity page read them 1c861b5 lore let a quest carry any file type 9d54366 api/notifications,ui the preview and the admin list stop knowing the channels by name b456e80 lore resolve the project from -p then LORE_PROJECT a0d2a81 api/notifications a sink channel fires at a destination, not at a person 5b4a530 api/notifications a NotificationChannel contract, and a registry that refuses a channel nothing provides 2e4be19 lore give @alepha/lore a `lore` binary 4bb94df api/notifications open the channel columns to any channel name 621f19e lore add a Claude theme, light and dark 4f99517 lore an Activity page, and it is the project root instead of Quests e734a20 Bug Fixeslore the Environment tab refuses Bay's own names on a Bay copy (#Q2250) 57bacc3 lore a Bay machine's secret pull leaves out the names Bay writes itself (#Q2250) f36c57d react a disabled useQuery does not poll (#Q2224) 0bf7458 lore the sign-in bridge back into OAuth pages had never fired (#Q2217) 1fa40c2 api/oauth serve the device approval page the grant advertised (#Q2217) fb4c2f7 crypto require APP_SECRET only in apps that use a secret (#Q2218) 3712ed4 bay cancelling the connector's Run closes its socket at once (#Q2214) e62b5fc lore the French epic prompt labels match Review Epic and Work on it (#Q2197) 963ed37 lore the empty project board is one centred empty state carrying Add card (#Q2195) 6591bcd lore dashboard cards and the project switcher take Control's border and hover border (#Q2194) b24f2fa ui sidebar entries sink on press the way a Button does (#Q2196) f32013a lore Activity's resource filter drops Epic and Release when their Work options are off (#Q2192) 421afc9 lore Activity hides the Everyone filter on a one-member project (#Q2193) c8352af lore epic prompts read Review Epic and Work on it, the verb quests and feedback use (#Q2197) e139315 lore agent prompt menus show the label alone, with no description line (#Q2198) 9678639 bay redirect plain HTTP to HTTPS instead of serving every app in cleartext (#Q2165) 39bb877 lore a deploy refused by the concurrency cap waits for a slot instead of being lost (#Q2189) 0b40315 server send an ArrayBuffer or typed-array reply body as bytes 81c2681 api/keys an API key records the IP of the request it authenticates 1fffb1f api/jobs a manual trigger no longer runs a cron alongside its own tick f77aeac lore the Lore app is an optional peer, still declared 58fd198 lore @alepha/lore installs outside the monorepo ab5ac94 api/jobs a cron run that outlived its lock no longer frees the next holder's 4641620 platform a destroy reports the Durable Object namespace gone with its Worker fa432eb api/keys the API key usage write outlives the response on Workers d606689 platform a teardown takes the dead-letter queue its deploy made 7bde5ef cli a Lore deploy binds the queue consumer the build declares 8b193a6 cli a redeploy rebinds its queue consumer instead of creating a second fdff064 email a workerd entry for alepha/email/smtp, so a Worker ships no nodemailer 3a16e74 cli a queued job starts when it lands, not after a batch window 4b91bed ui a date trigger takes its boundary from the field token 231cf6f cli a vendored package builds itself, so Node can load it 5537bc9 lore Agent Prompts and Edit go icon-only, and the labelled menu goes 32eda96 lore the loop prompt leaves the inbox toolbar for the footer menu 00b0660 lore the epic and release cards could not be added at all (#E46) 953537d lore five dogfood quick-wins, and one measurement that says no 2cd6f70 cli ban TypeScript parameter properties, and clear the 44 5c28c68 ui give a control's boundary its own value, at 3:1 b77cbbc api/jobs the reschedule spec asserted job:success after waiting on the delete 74aadac api/jobs a queue consumer buys wall clock, not CPU, and warn about untimed jobs c14550e lore run jobs through a Cloudflare Queue, off the 30s waitUntil budget 8ad5b02 lore the push-image spec must not trust the machine's LORE_PROJECT f2ae1ca lore regenerate the dashboard-cards snapshot on top of the artifacts rebuild 2b46ce4 lore regenerate the artifacts migration on top of main d9357a7 lore a filter that matches nothing stops offering to create the first app 98ce0d6 lore the kingdom, the party and the forge leave the empty states 3032c8e lore the artifacts App column stops guessing which copy to open 1868cd5 lore the artifacts App column stops guessing which copy to open cc7424e platform the asset upload does what wrangler does 63f357e lore an epic's release reaches the quests the epic holds c7b8e8f lore a deploy streams its assets instead of unpacking them 887fb6a platform an uploaded asset carries the type it will be served with 4176599 platform a Worker deploy ships the app's static assets 0539541 react/router a root param page no longer answers for orphaned assets c3da037 server a 403 says why, where the reference id can find it a197ac8 lore the artifacts empty state takes its alignment from its frame 1469d94 bay the current symlink is relative, so moving an instance cannot strand it 11f04be platform a websocket Durable Object is not a database, and destroy stops pretending it is 7259617 lore the kanban lane stack scrolls, so grouping reaches past the first lane c2dd461 lore a blocked decision belongs in the agent's reply, not only in Lore 6bf0046 platform a copy's Durable Object storage is data, and destroy treats it as such 111d5ac lore the instance fixtures the ephemeral column left behind df4f2e3 lore destroy cannot be aimed at production by a forgotten flag c65bde1 lore a 500 from destroy hid a Worker and a database that were already gone 02d01ce lore the teardown adapter comes from its own container, as the deploy's does 36fbd9e lore destroy 500'd because a $module was injected as a service b863bda react/router an application with two realms can say which door a denial belongs to fdbed5b lore every activity kind reads as a label, and App names one thing c71b336 lore anchor the feedback footers left, out from under the bubble da0c940 lore the artifacts command wraps instead of scrolling out of view ebdb242 lore toggling Preview no longer moves everything under the editor 4191541 lore the Cloudflare token guide links to the docs site, not to Lore 4decb5a lore choosing a default environment no longer empties the sidebar c60b063 platform read the version list where Cloudflare actually puts it 1385be3 lore lore apps build no longer copies dist into itself 72db202 platform store the version Cloudflare minted, not the script's name ed15ab2 platform compose the Worker upload the way Cloudflare documents it f8dc6d3 platform the worker upload names its entry the way the modules are named 48a4478 lore the tree's two create buttons name themselves to a pointer too b2d4d07 lore the folio breadcrumb reads #F12, like an epic's and a quest's 6610206 lore the project quota counts what you own and still have 77ee88f lore Artifacts says Search, and its empty state is the table's 5fb7275 lore the inbox table fills the page, and its search says Search bc02d4a lore the Notifications page gets its breadcrumb 33bcb63 lore Notifications leaves the rail, and the bell is the only door 1cb2fa2 lore the default-env row asks the rank, not the membership flag 628da1e lore drop the propagation-delay banner from the capability sections 56e8406 lore the rank matrix stops listing permissions no rank can hold ba9fa19 lore the e2e suite fits its budget again, and two specs stop depending on order c15e4c6 lore the settings rail names each capability in one word c1fc979 lore the selection toolbar waits for the mouse to come up c2532c3 lore a shelved quest says so once, and the truncated title has a tooltip 1ea73cb lore the editor's Preview toggle sits level with the format toolbar e2b52a5 lore project_name resolves a slug as well as a title f21fdc9 platform D1 migrations go through the import flow, not the query API b4bfb29 lore a tab's gate is its own capability option 0494c38 lore createProject rolls back the project when the membership write fails 5cbce89 lore the bay console spec says its project does Apps ecfbbbf lore the estates dialog spec builds its project through the fixture 2df0e81 ui buttons stop overruling the hover their callers ask for 91862ca lore say so when an app sends feedback the project drops e6c8afc cli the app loader's Vite server no longer wipes the dev cache 8aeec95 lore the Apps table columns share the width e4e858f ui a selected value with no option to be selected from gets a row 9fb3b8a lore a directory holding the open folio can be collapsed again 3423c14 lore bound the project-wide sigil reads under D1's parameter ceiling 76511bf ui the colour-mode toggle is a paint, not a render 286392e ui the showcase's dead controls, found by driving the built app 44e9e01 ui Enter commits a text field, and the theme menu behaves like a menu 88dcc7f ui the clear x sits beside the chevron at every size, and reads quieter bf6e2c2 ui opening a table no longer freezes its columns forever d402140 lore the wiki-link picker waits for # and a character 814a588 lore the folio tree's indent guides are centred on the column they mark 244982c lore the questline stat bar is one line, whatever it is given 0ed2c4a ui the shell and sidebar pages, and every dangling link a crawl found 322b43a ui the shell's overflow bound is real, so the admin page stops scrolling 9ebee06 orm createMany sizes its batches by the driver's parameter ceiling c93c117 lore the reference converter writes a page of rows per request a612085 lore the epic workflow's refusals speak the typed reference grammar b72820a lore the epic page's Quests table scrolls itself, not the tab around it ca2a1c5 lore the locale strings that put a hash before a number cd82fc0 lore drop double-click-to-rename in the folio tree 42bf9cf ui a clearable select names its empty state once, on the trigger 316ea7b lore the [[ picker inserts #Q12, and stops offering attachments e28d0af lore the folio tree keeps what the reader opened across the list-to-folio step a2d1e0b ui treat a changed persistenceKey as a changed scope cb93d0d ui a PlateLayout with no plate stops ruling off its tab bar 2b7da0c lore the quality charts plot the day, not the commit hash a383d2b lore stop opening tables on a page size their own picker does not offer 293f5db lore make the index migration idempotent so a retried apply can finish 1a2d5c0 lore give QuestView a chunk boundary so the quest page preloads d00f384 cli parse the source for $page preloads instead of scanning it dca19f6 react/ui load a theme's font where no theme picker is mounted 2366f2c
Featurescli affected selection and caching are what yarn v does by default d31511d command RunOptions.cache skips a task that already passed on this tree ec5b72e cli yarn v --affected runs only what a change can reach c7be419 lore let a completed quest still take feedbackId, area and tags 33768e3 lore move the error budget off Analytics into its own app tab 0b376ad lore page the feedback inbox at ten with a Show more bfb8288 cli alepha test --project selects one or more vitest projects 5989b3a lore create, rename, recolour and delete a kanban column from the board 80c40b8 api/users an operator can manage another user's avatar 76acabe lore Lore writes domain audits, so the log says who did what a17fe05 ui a plate-and-tabs layout, and Release, Reports and the App view share it e21f9b2 lore the owner removes a member, and both card kinds share one row menu e0e7377 lore the quests release filter can select what belongs to no release 1bc1e01 lore the rail's Commits row is short codes with the message on hover 63836c7 lore a completed quest can still change release 59ad4a4 ui Control takes a size and a minimal variant, and the rail's Release row uses both a37b4cd security a default realm is declared, not positional 81a9e43 platform push ghcr.io/alepha-dev/lore from the release job, multi-arch 1d70e84 api/notifications a $notification subject can be built from the variables 0580352 lore build a self-hosted image that runs on a port and a volume dd43d55 lore email is SMTP-only, and everything it gates is off until EMAIL_HOST c42e653 api/users bootstrapFirstUser makes the first account the administrator fccd95a cli OCI labels gain source, title, description and licenses 9c5f165 crypto APP_SECRET_FILE generates and persists the secret on first boot c0b1d7a cli the docker target bakes env and volumes, and stops running as root 40581c2 lore a fixed formatting bar above description fields, and the header's create control is one "+" menu 7a8ac2d lore epics status multi-select, create quest from the epic page, no more board landing, no member hover card ae9b7be api/parameters the tree says which nodes are orphans, hides them by default, and lets an operator delete one 4d4e001 lore Artifacts is a tab of the app view, not a card on the Dashboard 5ecc55e lore the quest tables' create, columns, bulk bar and release glyph, from the 2026-09-02 feedback 4eb1409 cli `build --if-stale`, so a pipeline stops rebuilding what it just built 08c899d orm alepha db doctor reports rows whose storage class disagrees with their column 2060e0d lore bulk Shelve, Unshelve, Delete and Add to release on the quest list 44af820 ui a bulk action that opens a menu, with its items resolved on demand dd2c54a cli alepha lore releases publish, so a release job can publish its Lore release aa7ecc3 ui a primary form for the table's toolbar action, so the create button is visible d9d89e0 lore a settings page for the Quality flag, so a pushed run can be seen 13de941 api/analytics a pinned scope, so the query builder serves one tenant 72bc4f2 lore alepha lore login, and a credential order CI cannot trip over c5f05ce lore the invite link opens the register page and ends in the project 325410c lore the release Artifacts tab reads the real registry 0a69c6e lore artifact_list and artifact_get over MCP 54911b2 lore epics get dependsOn, so the roadmap draws the order cf3c676 lore the signed-out hero stops offering a signup that is closed 8b647f2 lore artifacts on the app page 34d4977 orm aggregate() takes conditional buckets, so a bucket is a column not a query e2efc91 api/invitations the invitation carries a signup token 4c2a6dd lore alepha lore artifacts push 7ddb5c1 lore the members roadmap, behind the same URL 807036a api/invitations extract Lore's invitations into a framework module 54e2c0a lore list artifacts grouped by tag, variants folded in dd342aa lore the roadmap route, and the first anonymous read endpoint ecb954e lore latest is mutable, every other artifact tag is write-once 1118416 api/users a closed realm can let one address in 17b521a lore artifact registry, addressed by sha256 a12dbf3 lore roadmap visibility, one switch with three positions 246abf5 lore registration is a runtime parameter, and it defaults open 0bed3c8 ui multi-select renders a trigger, labelled value-then-count c7e13bc lore alepha lore quality push 07919c9 lore Reports has a Quality tab a2be6ab api/analytics the admin page becomes a query builder 5e4c20e lore @alepha/lore/cli, the plugin shell and LORE_API_KEY auth 7aebd0a lore quality_runs, its own storage, and the push endpoint b4f6261 lore the release page becomes a plate over four tabs 3b9a548 cli alepha test --coverage writes the coverage and test JSON reports 6b37f90 core build metadata on alepha.meta, served at GET /version 4c4103c lore fold the quest form's optional fields into an Advanced section b1b885c lore check mermaid fences on write, and stop relying on the doc arriving 30a30ae api/oauth the consent screen says who is asking and what they get 2862160 cli validate the build manifest on both sides of the artifact contract 010be98 core was* assertion helpers on the remaining memory providers b64a327 lore a quest's commits link into the project's repository b1e049b lore the quest feed says what an edit changed 07d68c0 ui a typed prefix can select every match in a multi-select 61acdf8 ui filters on the Admin Sessions page 8347c96 lore Copy ID and Edit Quest in the quests table row actions 32227f6 lore the quests table takes several values per filter 0a27f1a Bug Fixesui mount the navigation progress bar at the app root, not inside AppShell 7c8e66d lore give the landing page a project list below lg, and stop truncating the greeting 7ab0590 lore centre the quest rail rows so a control stops pushing its label up 0dcbd84 lore drop the Apps heading and stop the Reports column stacking 8de491d lore route every filter box through FilterSlot and settle on "Search" fb3fbf4 lore run Reports full width and let only its body scroll 60001a0 lore let App Explore fill its plate 4d7b3f9 ui close the mobile nav sheet when a link inside it is followed 826698a lore order every release list by version, at the source 8bbf1a0 lore bring the dashboard and kanban icon targets up to 24px b22b66b lore wrap the kanban filter bar instead of clipping it off-screen 4474b47 ui stop DetailLayout's toolbar clipping its own tabs and actions 95f1db2 lore import the SMTP module dynamically, so it stays out of the Worker 93a8627 lore derive the email-gated settings from any transport, not from EMAIL_HOST 4ec80bb server the link registry resolves permissions in the caller's realm bd24c6d security a token minted by one realm no longer authenticates in another ff5ef8a react server rendering keeps the caller's realm in the auth context acbed7f security createRealm recognises its placeholder by identity, not by name db30446 lore chunk every unbounded inArray, and classify D1's parameter ceiling d01915f lore entry points say "New Quest" and "New Epic", like the rest of the menu b7cf8b5 api/audits the admin action filter offers type:action pairs, so create no longer means create-anything f2e29d2 lore the release glyph reaches the epic aside, the quest rows and the epics list 05b5769 lore the Explore tab is registered with the shell's route tables, guarded by a spec over the router 3cc702b orm dev sync warns whenever the fallback left a table alone 2e9cf83 ui the account shell supplies a dialog provider when none is above it, and labels its rail groups b10d15e server the tokens cookie carries its realm, so a refresh resolves the issuer that minted it 7ecd563 orm dev sync resolves a rename drizzle-kit cannot ask about, and says when a table was left stale 6a122db server the tokens cookie carries its realm, so a refresh resolves the issuer that minted it 84cdf84 lore a bare number in the palette finds the folio and directory carrying it ebdd6b4 api/workflows dispatch from the persisted stamp, and never drop a dispatch on the lock 0d03a91 api/workflows every execution transition is a compare-and-set 527d30f ui the shell topbar must not push its controls off the screen b72081b platform db export survives a NUL byte, and no longer eats the dev DB fadf99a ui AutoForm groups must not shrink under fill ece5605 lock a lock expiry stops holding the process open 7ef82e4 cache a cache eviction stops holding the process open 4951866 lore regenerate the artifacts migration on top of main a82dd80 lore the merge resolution's other two files 0e81262 api/invitations satisfy oxlint on the merge resolution 39b2200 lore quality runs carry totals only, one row per branch per day 9396fcb lore the CLI specs stop reading the machine's environment 1eec91a ui Control's inputProps reaches a select's trigger 7e4c2be cli the prerender sees the build metadata too eaa8b52 lore the quest e2e specs open the Advanced block before reaching into it 1972cdf lore feedback_get returns the context the reporter's browser captured c722a2e command drain the heartbeat before deleting the ticket b8e7b1c react report hydration mismatches with their component stack 93d3324 lore scrub the query strings already stored on blights and error groups 030160b sigil a refusal is not a crash on the browser side either a9f557b ui name the user when clearing their second factor a372db8 lore the due date uses the kit's date picker, on the Tags row c49c0da lore Attach Quest moves into the table toolbar, and the rule is written down 5f30e56 lore drop the Edit tooltip that only said Edit 2c07553 server answer HEAD on every route that answers GET efd4d9b ui the interaction state layer applies in dark too 94675e9 lore the Kanban filter bar uses the same controls as the quests table c81a523 lore one tag chip for the board and the quest rail, colour included 3e06d53 lore sort releases by parsed version, not by creation order 5adb8ea lore the release example is 0.1.0, not the version we happen to be on a6ba08e lore a toolbar spinner goes last and never moves the row e6af711 ui make the ghost button's dark hover as visible as its light one aaad40d ui keep a destructive row action red on hover 4097b7b
Featureslore cap a quest at 10 objectives 5aac311 lore a Size column in the quests table f7d19c8 lore begin an epic from the list, and confirm before beginning one 46d53d7 lore offer New Release in the header create menu f3f8118 lore create a release from a dialog cf34d5e lore rebuild the Releases page on AlephaTable 67c467a lore sort the epics list by release, in version order 2891b51 lore double click a folio tree row to rename it fc34c6f command hold the exclusive slot per step, not per command 439cc51 lore epic_delete over MCP, detaching quests and folios 5699449 lore release detail page (#1559) a2deea1 lore MCP release tools (#1558) b6be121 lore releases list page (#1557) 5f68e8d lore changelog derived from the release contents (#1556) 4e55784 lore release progress rollup (#1555) b37254d lore ReleaseContentService, one answer to what is in a release (#1554) fd794f9 server a credential on ClientScope, honoured by registry and calls bd318e8 lore attach quests to a release (#1553) 8beeb78 server $client resolves against a remote Alepha app 6898bf4 lore attach epics to a release (#1552) dddd045 lore release planning fields, tag and target date (#1551) 87fc7d6 queue a due-time delay tier for Redis, so it stops declining delays e9b4177 security $owns chains its hops, and QuestCommentController needs it a8d1526 lore $ownsProject, the project rule stated once instead of sixty times dc28cc2 security $owns reads its id from the query or the body, not only the path c6c07a4 security $owns can hop to the row that actually holds ownership ccef99a lore an owner can take an invitation back, and a failed read says so cf174b2 api/jobs delaySeconds on the dispatch interface, and real backoff 1b23a7a api/jobs inline, run the handler and hand the caller the outcome cf85d4c sigil browser and OS, stamped beside device ffc59df lore an apps inventory, reachable from the crumb that used to be dead text 1b8b0f0 lore an app can be renamed ded61fa lore vitals by page, the half of the tab that is actionable c87a3f7 lore the analytics overview, Umami-shaped 8a14eb9 lore a leaderboard's detail page, and the loop back to a filtered overview fabd4f5 lore the app dashboard answers what this thing is, and costs nothing 5c232e6 lore vitals reports the range the histogram supports, not a boundary 1d924ed sigil an app reports the config it is actually running 7761fc4 lore insights takes dimension filters, and answers one dimension at a time 6419371 ui the folio editor reads as a page, and Preview agrees with Edit e097173 devtools show the framework and app versions, and stop conflating them aca0fbc lore let any project member create and manage epics 3877f6e api/notifications filters, live preview and row actions in the admin 3518a77 lore/kanban wire the board component to every Kanban v2 change a240098 lore/kanban let a column declare which lifecycle state it maps to ae299e9 lore/kanban age cards by time in column, never by updatedAt 23f79e7 lore/kanban group the board into swimlanes by area or epic 1b1ce4e lore/kanban remember board filters, and add search, mine and due 8a30ff0 lore/quests reopen a completed quest ae6840b lore/kanban compose a card inline at either end of a column 06f14d4 lore/kanban rank cards manually with a lexicographic boardRank 3a3c2b9 lore/quests let a due date be set, from the form and from MCP d5167c3 lore/quests assign a quest to another member 6a2c382 lore/kanban colour quest tags on cards and give the area its dot 5f2a498 lore replace questsViewAtom with project.defaultSurface 179bf37 lore/kanban open a card at /kanban/:shortId dd61cad lore/kanban give the board its own route and sidebar entry 523e3a8 ui draw mermaid sequenceDiagram fences as themed diagrams 8d9656d api/notifications delivery hygiene, receipts and React email templates 04facd5 websocket enforce maxConnectionsPerUser on Cloudflare too 8a53fe0 command add an exclusive option to $command b3a0f60 sigil show where an enrolled app actually lives b5e193d sigil tell readers from crawlers in Insights a1f919d sigil publish, behind one export path instead of fourteen 55c4093 command honour the -- terminator and add --no-flag negation b557aef api/users add two-factor authentication with TOTP and email codes f0496a0 Bug Fixeslore show the release tag on the trigger, not its database id dd85c0d cli run the DROP TABLE guard on every check, not once at generate 12eaab5 server stop HttpClient logging bodies verbatim, and paying for it f6d9f15 lore give the kanban area and tag filters their leading icons 55e22a7 ui let the DetailLayout content column shrink horizontally 571700e lore show a reporter their own attachment in the edit drawer da73f0d orm route both count paths through handleError 6ec34ba ui admin user detail issues no request with an empty id dbf99f1 ui the count on an active segment keeps its contrast a6c7334 command verify an exclusive claim after writing it 4bf192b orm unwrap D1 statements before handing them to batch b73e39b server $.fetch keeps its scope, and a registry keeps its prefix e034842 email refuse header injection, not just reserved header names b5c1691 api,cache the DCR rate limiter cannot silently disappear e8e9565 cli the changelog can see a breaking change declared in a body a152131 server an outbound HttpClient no longer registers an HTTP listener f81df08 lore the completion dialog fits the viewport whatever the objective count df320a9 lore a tree rename survives the editor's next save c9389ba lore delete the rail's Questline row, which said only "Unlocks" 0485b68 lore a long commit message stays inside its rail cell 25cc415 lore dress the editor's find panel as Lore chrome 798a0a2 lore Tab indents in the markdown editor instead of leaving it 8f1b91e lore Cmd+D in the folio editor duplicates the line, not the folio 6f7fdb9 devtools relative times read the injected clock and refresh 34a7ba7 security the memo spec added a security -> server/links cycle fb2e744 bay an app survives a reboot, and removing one uninstalls it 583ed59 api/jobs bound the sweep batch, and give redispatch-stale a way out a4d7009 lore the empty folio state keeps the shortcuts it advertises fd0be4c server a client the parser cannot place is called unknown, not Chrome on Windows 3a73c91 lore the /account area speaks French too eea39d0 lore a failed save says so 29c06b6 lore the epic page shows the same status chip as everywhere else 60e3e3a ui no hooks below a return, and a lint rule that says so ea7847a api/analytics pin the Analytics Engine slot map instead of deriving it b9f253d lore a CSV import may only name people already in the project 5e3b94f lore refuse a protection flip that arrives without its content 9468dd1 devtools move the dev UI off the benchmark's port, and check the band 343dd6e sigil stop the feedback button shipping tokens and a fingerprint 994437d sms make the local outbox directory configurable, and read it in devtools af37c06 devtools cursor the log tail on a sequence, and drain bursts e1bd8ec ui stop keying id-less table rows with Math.random 39bee05 ui let the schema decide whether an object can be cleared 6a674c0 ui hide the Joined column by default, as its comment says 4990b5d react render crossorigin verbatim, and render links at all 1369e53 system createFile reports the file's mtime, not the clock bcaac6a system kill the process group, not just the shell fbd09d0 command parse .env with dotenv's grammar 92ab28c system memory fs records a call only once it succeeded bd0d227 cli dev server fails fast on a taken port, and coalesces retries a004a75 platform only a 404 means "no secret store" 8d47b35 api/jobs one sweep table, one staleness clock 474fb51 api/jobs claim the schedule instant, not just the job name e04c704 cache incr() now applies the container defaultTtl 0625390 websocket update the RoomManager spec for the removed readers dbdea9a email export the two new services from the workerd barrel a730f2e lore regenerate the notification migration after merging main again 684ab79 lore stop ordering the board by a text enum, which inverted priority cb805ec lore/kanban wire the settings drag handle to reorderKanbanColumns 3977736 lore/kanban drop shelved quests from the board instead of advancing them 4783ffa ui/admin stop the profile form toasting an error the toaster shows 0054192 core stop a logging option deciding what a failing hook throws e9cbebe fake give each provider its own faker instead of seeding the global 76a4d1a cache one key contract for all four providers ae3b308 api/oauth tell the truth in the metadata, and bound registration c47c181 captcha make Turnstile read the whole siteverify answer 01d78b4 server keep credentials out of the request logs af30dd7 server let an explicit Authorization header beat the session cookie cb28eb9 server make helmet's default CSP reachable and its off switch real 469f4bb react/form keep an edit that puts a field back where it was 273dfe7 websocket make schema.roomId real, and drop the path option a8a6113 mcp give a non-object tool result a structuredContent it fits in b9bb5b0 api/files make a storage handle an actual boundary 5e4814b api/workflows restart from the stored row, not from the caller 5cd5d89 api/workflows give a retried timeout a deadline it can meet 7a6bdc1 bucket give the local disk the name a file was uploaded under ab9809d cache stop two containers sharing a slot on Redis and KV eae8a08 core stop calling a defaulted field required 5c4fa7c react answer 404 from an app's own catch-all page cb4ac6d api/users,ui stop offering a second factor the login gate ignores 53c18f1 bay judge backup staleness against the schedule that is running e97890d bay stop two instances sharing one unix user 2cf02f8 lore one owner for what a quest transition does to the sidebar f4550df lore honour ?dir= on the folios route, which two producers already build d7409df lore let a broken wiki-link reach the DOM, so its hover card can exist f5cdab6 lore no folio menu entry opens and does nothing any more 6ca1b95 lore one invite hook, and put its toasts in the catalog ce5b7ca lore make the view bar on a quest detail actually go somewhere 869bd61 lore tell the feedback list when the quest sheet closes, not only when it submits ef5f013 lore enforce the three project caps that were only ever declared adead89 lore make the folio namespace the rule it already claimed to be 9be0f2b lore stop the CSV export from handing a spreadsheet a formula 48054da lore reclaim a folio's attachments instead of stranding them 5cf6b2f sigil hold the server reporter off outside production 885883f sigil split the batch, and keep the page alive only on the way out 9f3d25a sigil file each web vital under the page that measured it 18759e4 api/payments stop a partial refund from undoing the whole sale acf7778 api/payments make the confirmation page keep its own promise dfde5ab ui translate the job and workflow execution statuses 788703b ui let the admin and account shells follow the language 83ba259 ui,react localise the account kit, and make tr() defaults interpolate fdc6e37 ui sync --check reported formatting as drift, so all 47 files drifted cc6d315 react/form declare POST, so a pre-hydration submit cannot leak fields into the URL e70220d ui sync clobbered nine local divergences, then died on its own output 35d7078 ui autoFocus was documented on the controls and dropped on the floor 8dfc7b0 react an optional object was submitted with defaults it never got 3184dc8 react the sitemap listed nested pages at urls that do not exist e2c5a46 react html lang announced English on every localised page d5ffa9b cli multi-app dev never told its children which mode to run b039e20 datetime travel() lost short hops and kept intervals for good aa805b8 lore /version reported the string "undefined" 6e99975 router a route's param names are its own again 9d35143 core a log listener that throws overflowed the stack 6154c7e orm paginate() counted without the joins its where clause needs bb6532c orm aggregate() turned every min and max into a number 5085866 server/auth one redirect validator, and a replay guard that runs 76bfc8d api/oauth device user codes could be guessed without a ceiling b3408f8 api/users admin deletion skipped the user:delete:before hook d7289f7 api/users admin update accepted realm and organizationId 328b332 api/users OAuth sign-up marked every new account emailVerified 70c3dac lock a Redis release could delete the next holder's lock 58a3642 security a realm-less permission check scanned every realm 80d6992 lore/mcp quest_list floored its offset to a page boundary 823784c bay env files and systemd's EnvironmentFile disagreed on quoting f1c33b1 lore/folios auto-lock left the editor believing it was unlocked 9ade8b5 lore/quests two mounted attachment rows both uploaded a pasted image 0940dc4 lore/ui area settings kept the previous area's state after a merge 04ca03a sigil one stamp per batch collapsed N visitors into the last one ff4e62b react a post-save refetch wiped edits typed meanwhile 742f2d8 ui array item inputs snapped back to their mount value 330279e react a superseding keyed query joined the request it had just aborted f72fcc1 protobuf z.integer() was emitted as int32, so large values wrapped 320d695 cli db commands advertised a path argument nothing read 23e7193 security a $role declared before its $issuer was silently dropped d0de0e6 orm createDeep through a many-to-many overwrote the child's primary key 5b23436 orm a null relation filter was silently dropped, and guards were swallowed on write 629bf88 captcha the accept-all memory provider was the production default 1c0106a server/cors a rejected origin still got Allow-Origin and Allow-Credentials 517b20d server/rate-limit nested run() calls shared one ip:unknown bucket 17f6172 cli/init treat Windows shell metadata as an empty directory 79d2902 server request.ip trusted the leftmost X-Forwarded-For entry c6034f4 server/etag $etag inside run() bound to the outer HTTP request 70726be lore/mcp project_list told every member it owned the project 2866f27
Featureslore size quests on a 1-5 t-shirt scale 0f4b461 lore file folios under epics over MCP 1e3dff1 cli replace Biome with oxlint and oxfmt 7a0d7c8 api/users show when a session was last used, not just when it started a12f9c7 lore split the dashboard header and drawer the Add-card panel 154922c ui draw mermaid flowchart fences as themed diagrams 5d41632 orm bound D1 queries and support the Sessions API 3522e85 ui let AlephaTable take static data bc02a7c lore make the MCP surface safe for a second pair of hands d6ee29c lore make the signed-in landing page a dashboard 98839ca lore give the estimate input a custom unit and tidy the create menu 2189685 lore put the quest id in the table's title cell c183bcd lore bring the quest log back to the quest detail route d08c88d lore rebuild the quest view on the mockup bb926bd lore make the quest's blocks collapse on one pattern adf1ef0 lore rework the quest rail into a full-height bar 62437f2 lore give the discussion one column and one rhythm d24179e lore rebuild quest attachments as named chips with a viewer bfccfa1 lore make the shared markdown editor usable as a plain field 106f6a6 lore give quests an optional due date 8f79803 lore widen quest attachment types and name them over the API d4969b6 lore put the epic's number in the breadcrumb, not its title 7f3733c lore give the quest log's argyle lattice its stylesheet eb0c74d lore lay the mockup's dot grid over the content area 25ff0b0 lore add the strings the reworked quest view needs d08e691 ui let AppShell style its scrolling main 3bcb86f ui give AlephaTable a page-size picker and a sortable-column affordance d029589 ui give Badge a tint variant and a tone axis 8fe2638 ui bring the epics list and the questline dialog onto the quests table's shape 761424b lore replace the epic flow graph with the questline map 6369435 lore widen the feedback list panel to 380px f9d8ab0 lore put the quest id on the title and make it a real anchor a58d126 lore let agents read and write a quest's discussion over MCP bfe71e4 lore add the comment composer, with @member and #quest references 4644d8b lore rebuild the quest timeline as one Discussion feed 7324f54 lore add quest comments, the Discussion's transport 14e4f63 lore give the quest page a metadata rail and dissolve the action bar 448808e lore make the quest detail a full-width page 1eb7a16 lore give the quest view a back arrow and two section sets dbd22f2 lore keep the epic badge live after a mutation 300067d devtools run Try It as the session, and keep logs across a restart a9c7e92 lore badge the planned epics in the sidebar 1bdc3d7 lore put the quest estimate behind a project toggle, off by default 3326e90 lore rebuild the Epics surfaces and make wiki-links work on every element f903601 ui/admin park the built-in nav in a 1000+ band, add a dashboard at /admin 70160b7 lore carry area descriptions over MCP 119a8f4 lore rework the areas settings list with real stats and bulk merge ed972db lore add the Area detail page 3d4af04 lore make areas the single source of truth for quest areas 9e8336e lore add AreaController, the HTTP surface for the new area model de5dd0a lore add areas entity, AreaService, and backfill migration 81122db react/head let a meta tag carry a media query dcb7dcf lore add the Epic detail page and its dependency flow 737deb9 lore add the Epics feature flag, list route and page 5f26c28 lore expose Epics over MCP and un-gate quest_list c704c82 sigil,lore report referrer, arrivals, engagement, campaign and device c41ca0b lore add EpicController for CRUD, status lifecycle, attach/detach a3d955c lore gate planned-epic quests out of the backlog listings c1b487f lore add epics entity and epicId foreign keys d995a70 react/router answer browser navigations with HTML error pages 5e12817 cli add dev.port, bind it strictly, and fix dev with CSS modules c497b37 cli flag secrets pushed before the last env edit, and say a deploy is needed 079940b platform write placeholder blobs on `db export` 6f3c1d3 platform honour `secret: false` when pushing Cloudflare bindings 18efd6d lore drop the folio TopBar, and remove folio tags entirely dc49479 react give every page its own canonical URL, og:url and twitter:url 267eae3 lore seat the quest view on the page, and move #id onto its title 5b435a7 Bug Fixesapi/workflows publish a step's AbortController before the row says running febcafe orm sqlite could not introspect its own case-insensitive index 448bf6a ui account cards were shaved by their own scroll column bc89c8d ui the settings rail's active entry matched nothing 93455af ui settings cards had drifted into four different edges 1b6af5f cli report database command failures without a stack trace ac7d142 cli a stray word on a leaf command was silently ignored f1735bd react static assets were cached for 3.6 seconds, not an hour 5b17801 ui settings cards drew a doubled edge next to the form card 5aa7dbf orm sqlite schema push was silently applying nothing 02fa166 cli stop the linter from rewriting the project's dependencies 47ac5c7 devtools render structured values as JSON, not [object Object] fe1c810 react stop rebuilding accumulators inside loops 8b3b9f3 websocket decode fragmented frames instead of stringifying the list 94b63d4 react keep parameterized pages out of sitemap.xml a26b464 cli make a freshly scaffolded project work under yarn and pnpm 842de36 lore stop the folio request-count e2e counting telemetry 42617bd lore repair the milestone e2e the i18n sweep broke, finish the sweep 514391d core read an empty env string as an absent structured value 1e84a7a lore make the section breadcrumb link back to its list 3aa2a04 lore assert the token prefix by its rule, not by a fixed slice d5ba9a1 bay stop an unreachable data root from reading as a readiness timeout b89a7fd platform let the deploy name the artifact it packs 7c534a1 ui give tooltips a classic open delay 802d97e lore surface a closed state on the feedback request form 9bb7240 ui return a stable singleton from useToast fdb2b2a lore close the area-rework's remaining review findings ec1235f lore resolve e2e fallout on the areas settings row and its security spec 39475b1 lore retire projects.areas, the last dual-write area source ff52838 lore bound each area's description in the MCP payload 9bc3748 lore fix the areas $action name collision and markdown/i18n bugs review found ff6fef9 lore force-reload the Area detail page after a plain rename a8156c2 lore register the area on the CSV upsert-import branch too 59e51e1 lore register the area when a quest is edited onto a new one d6301d6 orm,mcp make a failed relational read diagnosable 18d7099 lore stop deleting code from Markdown quest fields 4499ef2 lore force-delete merged source areas so their name can be reused 8c51a71 lore rebase the epics migration onto main's sigil-analytics one 7fddf0b lore stop the backlog gate from hiding a planned epic's quests everywhere but the UI 3fd560a lore give Epics its own settings sub-page 71422ff lore filter an epic's folios server-side and guard reload failures db0e91f lore drop the epics list's status-transition column, use shared feature toggle 12e6ec6 react/router restore scroll on back instead of jumping to the top b95e4e1 lore close partial-write window on refused epic attach/detach eadc864 lore gate EpicController.deleteEpic on quest:delete, not quest:create d9f5600 lore exempt completed quests from the backlog gate in Reports 40f1c58 react/form replace the literal NUL byte in useFormQuerySync with \u0000 c7e0902 lore use --target=docker in build:docker and correct the --keepSql comment a293167 cli frame the init wizard's questions and trim its sign-off ac52fd6 react show the auth slide in GettingStarted again 0daa9e5 cli honour an absolute path in `alepha init` 47f88c9 api/users refuse a realm that needs codes it cannot send 74f67e9 api/parameters skip the ready preload under multi-tenancy c8ce820 orm stop paginate leaking an unhandled rejection when count scoping throws aac3ef2 lore make the project switcher's rows real anchors da0ee5b
Featureslore collapse the quest log, cap recent projects, and strip the folio header 6f99d72 ui mount the account area, and fix what the back office exposed 88340ab api/payments make sweep cadences configurable, default to */15 1fa582e ui,api finish AutoForm's settings-card layout, and fix what adopting it exposed 356bbd0 cli wire create-alepha to ask.choice/ask.confirm, drop dead Asker injection 302d302 command add ask.multiChoice and the selection parser to Asker 88646ed lore replace MDXEditor with a View/Edit markdown surface 039d62f Bug Fixescli rewrite workerd chunks through the AST, not a regex dc6047d ui stop Segmented's thumb sitting one border-width off its segment 33d2b20 devtools stop an unrepresentable atom schema breaking the whole UI 3c81eab cli make pnpm scaffolds hoist the bundled toolchain 19ef91b ui make the account area work inside a clipped app shell ee539e9 core,orm,cli close the five defects a 0.25.2 release rehearsal turned up a5d3c63 orm refuse to boot in production when entities have no migrations 3fb97ae cli generate a baseline migration for ORM presets at init 4cf4a44 cli,react,server,ui close the gaps a two-preset init audit turned up 6e09a2f