moooon
Motir
Vibe the project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.
- Vibe Project
- Open Source
- AI Agent
- AI Loop
- 6
- 需求
- 4
- 贊同
- 505
- 已規劃
- 5,043
- 已發布
- (motir-core) The migration's never-wider check — each person's key set per project before and after, compared inside the migration, which fails on any widening except the one the model decides (a workspace member gaining the Member set in a project they were never added to)Roles & permissions, refined — org Owner · Admin · Member, ROLE on the workspace and ACCESS on the project, an automatic Visitor on public projects, and a UI that offers each role only what it can do
- (motir-core) Custom roles live at the workspace — create from a Manager, Member or Viewer base, edit, and delete-with-reassign move from `projectRoleDefinitionService` to a workspace role service and `/api/workspaces/.../roles` routes, Manager-onlyRoles & permissions, refined — org Owner · Admin · Member, ROLE on the workspace and ACCESS on the project, an automatic Visitor on public projects, and a UI that offers each role only what it can do
- (motir-core) One resolver reads the workspace role — `resolvePermissions` takes the workspace role (or workspace custom role) and whether the person was added to the project, Manager / Member / Viewer sets replace the project role sets and the implicit member set, `isWorkspaceManager` means Manager, and `member-facing-permissions.md` is amendedRoles & permissions, refined — org Owner · Admin · Member, ROLE on the workspace and ACCESS on the project, an automatic Visitor on public projects, and a UI that offers each role only what it can do
- (motir-core) The role migration's mapping — every workspace membership given one workspace role by the DECISION's table, project custom roles re-created at their workspace, the NARROWEST role kept where a person's roles differed, and a report row for every person whose role changedRoles & permissions, refined — org Owner · Admin · Member, ROLE on the workspace and ACCESS on the project, an automatic Visitor on public projects, and a UI that offers each role only what it can do
- (motir-core) The workspace role storage, added beside the old — a `WorkspaceRole` enum (manager · member · viewer), `workspace_membership.workspace_role` + `role_definition_id`, a `workspace_role_definition` table and a `role_migration_report` table, with their RLS policies and repositoriesRoles & permissions, refined — org Owner · Admin · Member, ROLE on the workspace and ACCESS on the project, an automatic Visitor on public projects, and a UI that offers each role only what it can do
- Roles live on the WORKSPACE — Manager · Member · Viewer and workspace custom roles resolve every project's permissions, project roles retire, and every existing membership is migrated with a reportRoles & permissions, refined — org Owner · Admin · Member, ROLE on the workspace and ACCESS on the project, an automatic Visitor on public projects, and a UI that offers each role only what it can do
- (motir-core) A cross-level `blocked_by` is REFUSED at the link door (`CROSS_LEVEL_LINK`) when it should be ACCEPTED and reported by `validate_work_item` as INVALID ("blocked elsewhere"): the level rule is planning discipline, not a limit on what a dependency can express
- (motir-core) `findMalformedIntraPlanRefs`' ReDoS test is a 1-second wall-clock bound on a 2.6 MB input, and it goes red on a loaded CI runner (1013 ms) while the scan is linear (94 ms locally)
- (motir-ai) The drift guard's cache NOTICES are mostly false: it compares raw ratios against 6-dp-rounded rates, and reads "no write price" as disagreeing with a write rate equal to input — ~60 notices over the generated rates bury the one real disagreement
- (motir-core) A schema-only pull request builds all ten sandbox/runner images — the CI `images` gate counts `prisma/*` as an image input, though neither image reads it
- Story E2E + acceptance video — new Motir palette by default, Amethyst kept for those who chose it, new tab icon (motir-core)
- Story integration gate (motir-ai) — coverage and seams over the design-choice palette-id migration
- Story integration gate (motir-core) — coverage floor, seams and guards over the palette rename, stored-preference migration and brand-colour changes
- Apply the new brand colours in motir-core — tab icon + app-icon set, manifest, email mark / button / links, the Stripe record in the billing doc, and bump `@motir/brand` to 0.3.0 (motir-core)
- Migrate stored onboarding design choices to the renamed palette ids — `motir` → `amethyst`, `graphite` → `motir` in `PreplanSession.designChoice` (motir-ai)
- Graphite becomes the `motir` palette and today's warm `motir` palette becomes `amethyst` — rename both ids, migrate every stored preference, default stays `motir` (motir-core)
- Motir's look becomes the monochrome palette — Graphite is renamed "Motir" and made the default, the warm palette lives on as "Amethyst", and Motir's tab icon, emails and brand colours follow
- (motir-core) The MCP socket test harness can track a request that never settles, and `settleServerWork()` has no deadline — every later test in the file then fails its in-flight probe at 30 s
- (motir-core · test) E2E + acceptance video — the Owner schedules a deletion with the name and a step-up, a Member sees the banner and cannot edit, the Owner cancels and everything returns, an Admin sees no control, and a due org is erased out of every switcherRoles & permissions, refined — org Owner · Admin · Member, ROLE on the workspace and ACCESS on the project, an automatic Visitor on public projects, and a UI that offers each role only what it can do
- (motir-core · test) The org-deletion integration gate — the changed surface topped up to the 90% floor, schedule / cancel / erase driven against the real database, the Owner-only matrix, a cancel racing the sweep, a sweep killed mid-run resuming, and the tombstone holding nothing but billing rowsRoles & permissions, refined — org Owner · Admin · Member, ROLE on the workspace and ACCESS on the project, an automatic Visitor on public projects, and a UI that offers each role only what it can do