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
- 5
- richieste
- 4
- voti
- 380
- pianificate
- 4121
- rilasciate
- (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
- (motir-core) Every member of a closing organization sees it — an app-wide banner naming the date, who scheduled it and the personal-export link, shown in every workspace of the org, with Cancel only for the OwnerRoles & 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 danger zone's Delete organization goes live — its confirmation lists the consequences and asks for the organization's name and a password step-up, the Owner's scheduled card shows the date with Cancel deletion, and Transfer is disabled while closingRoles & 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