| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: improve boards performance | 7 个月前 | |
feat(api): add the demo content bundle Everything a prospect sees, checked in as data: 6 courses across 3 sections, 18 chapters, 54 activities, 6 graded assignments, 40 learner personas, 3 cohorts, a community with 5 discussions, 3 canvas boards, 2 playgrounds, 3 podcasts with 10 episodes and a storefront with 5 offers. The loader validates the whole thing on read, so a malformed bundle fails at startup with a specific message rather than half-building an organization. Two properties the sync depends on: Activity content compiles from a compact block DSL, and every id it emits is uuid5 of the text it belongs to. Compiling the same bundle twice is byte-identical, which is what lets a refresh compare rather than rewrite. Personas are drawn from a seeded generator, so a given content epoch always produces the same distribution. Images and audio come from committed generator scripts rather than stock files: provenance is clean, there is no licensing question, and no photograph of a real person or AI-generated face is involved. Board canvases are Yjs CRDT documents, built by a script in apps/collab where yjs already lives. | 1 个月前 | |
feat(collab): implement trusted proxy handling for rate limiting and enhance BoardCanvas text input management | 5 个月前 | |
feat: init boards feature | 7 个月前 | |
fix(deps): update all non-major dependencies | 22 天前 | |
fix(deps): update dependency ioredis to v6 | 1 个月前 | |
release: bump version to 1.3.6 | 27 天前 | |
feat: add the demo entry points, routes and tests /demo/status and /demo/enter, and the surfaces that use them: an entry card on onboarding and the org picker, a DEMO badge so a shared sandbox is never mistaken for one of your own organizations, and a banner that says what the demo is and counts down to the next reset. The banner is fixed to the top of the dash column rather than sitting in flow — several dash pages are h-screen with their own inner scrolling, so a strip in flow made the column taller than the viewport, and the bottom edge is where the save bars and the mobile menu live. Copy goes through i18n like the rest of the app, and robots.txt asks the API whether an org is the demo before allowing it to be indexed. Tests cover the bundle, the sync, the exclusions, teardown and the routes. Several assert the negative case too, because a guard that is never exercised is a guard that quietly stops working: entering the demo must not consume a free-org slot, and the members filter must not touch a real organization. The 403 assertions are pinned to the guard's own message — RBAC answers 403 here as well, and one of these tests was passing for that reason rather than the intended one. Two unrelated test fixes, both the same shape: an opt-in live suite that failed instead of skipping on a developer machine. The Ollama tests checked that the port answered but not that the model was pulled, and the superadmin token tests imported the Enterprise package without forcing the deployment mode that makes those code paths reachable. DEMO_STACK.md documents running it locally; the scripts generate their own secrets rather than carrying any. | 1 个月前 | |
feat: init boards feature | 7 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 个月前 | ||
| 1 个月前 | ||
| 5 个月前 | ||
| 7 个月前 | ||
| 22 天前 | ||
| 1 个月前 | ||
| 27 天前 | ||
| 1 个月前 | ||
| 7 个月前 |