Meta tags:
description= Huly — All-in-One Project Management Platform (alternative to Linear, Jira, Slack, Notion, Motion) - Mention-grants: Collaborator-based cross-space access for @-mentions by MichaelUray · Pull Request #10895 · hcengineering/platform;
Headings (most frequently used words):
uh, oh, mention, huly, grants, collaborator, based, cross, space, access, for, mentions, to, saved, searches, navigation, platform, michaeluray, feat, what, this, footer, commented, may, 30, 2026, loading, search, code, repositories, users, issues, pull, requests, provide, feedback, 10895, menu, use, filter, your, results, more, quickly, 10895michaeluray, wants, merge, 33, commits, intohcengineering, develophcengineering, developfrom, grantsmichaeluray, grantscopy, head, branch, name, clipboard, conversation, builds, architecture, sketch, is, opt, in, tests, live, deployment, evidence, sign, off, edited, there, was, an, error, while, please, reload, page, github, staging, bot, reviewers, assignees, labels, projects, milestone, development, participant,
Text of the page (most frequently used words):
the (256), #github (70), michaeluray (70), signed (62), users (62), off (60), space (59), michael (58), uray (58), noreply (58), com (58), collaborator (58), and (56), for (52), only (42), from (41), class (37), mention (36), this (35), collab (35), commit (31), that (30), not (30), issue (28), with (28), guest (27), grants (26), grant (26), cherry (25), picked (25), new (25), user (25), via (23), tracker (23), access (23), member (23), true (22), feat (22), middleware (21), projects (20), mentions (18), hcengineering (18), are (18), they (18), issues (17), doc (17), postgres (17), branch (17), all (17), when (17), chunter (17), providesecurity (17), can (16), docs (16), code (16), filter (16), spaces (16), trigger (16), server (16), security (15), comment (15), fix (15), members (15), project (15), add (14), false (14), read (14), core (14), into (14), huly (14), opt (14), disclosure (14), non (14), resources (14), message (14), any (14), existing (13), query (13), test (13), src (13), now (12), has (12), adapter (12), null (12), self (12), visibility (12), cannot (11), applied (11), may (11), undefined (11), svelte (11), dialog (11), but (11), was (10), already (10), cross (10), foundations (10), packages (10), classcollaborators (10), mentionsgrantaccess (10), grantsaccess (10), send (10), edit (10), your (10), caller (10), you (9), pull (9), text (9), veto (9), findall (9), reference (9), added (9), components (9), guests (9), sub (9), against (9), navigator (9), before (9), records (9), model (9), target (9), step (9), field (9), platform (9), 2026 (8), while (8), change (8), per (8), reload (8), open (8), commits (8), mentioned (8), ref (8), pre (8), side (8), nav (8), who (8), its (8), classes (8), suggestion (7), check (7), suggestions (7), merge (7), die (7), guard (7), explicit (7), level (7), v3b (7), which (7), workbench (7), still (7), client (7), them (7), tree (7), see (7), same (7), spacesecurity (7), view (7), composer (7), please (6), request (6), single (6), because (6), there (6), loading (6), page (6), sign (6), tests (6), storage (6), backend (6), mongo (6), bypass (6), develop (6), copy (6), sees (6), node (6), without (6), game (6), helper (6), popup (6), path (6), use (6), actually (6), both (6), system (6), update (6), set (6), every (6), unchanged (6), plugins (6), where (6), list (6), their (6), other (6), behavior (6), editors (6), returns (6), enterprise (6), status (5), one (5), changes (5), were (5), error (5), hidden (5), review (5), nicht (5), txupdatedoc (5), domain (5), nodes (5), today (5), milestones (5), templates (5), those (5), person (5), auto (5), iscollabonlyproject (5), reactive (5), important (5), through (5), v3c (5), flow (5), author (5), dedup (5), adds (5), shared (5), whose (5), surface (5), record (5), follow (5), tooltip (5), does (5), empty (5), then (5), readonlyguest (5), effect (5), would (5), warning (5), 10783 (5), search (5), time (4), community (4), navigation (4), closed (4), show (4), what (4), editor (4), fail (4), return (4), das (4), und (4), addsecurity (4), flag (4), package (4), carries (4), future (4), silently (4), hide (4), dependency (4), attribute (4), default (4), explicitly (4), also (4), session (4), used (4), types (4), v3d (4), correctly (4), grantee (4), never (4), skips (4), preserves (4), across (4), membership (4), inside (4), three (4), filtered (4), florian (4), listed (4), reads (4), admin (4), accounts (4), tab (4), own (4), callers (4), parent (4), thread (4), granttarget (4), bit (4), refs (4), 9741 (4), chatmessage (4), rush (4), effectivereadonly (4), caneditissuefields (4), cancel (4), based (4), support (4), back (3), line (3), comments (3), resolved (3), must (3), create (3), supported (3), batch (3), none (3), account (3), conversation (3), characters (3), contains (3), unicode (3), appears (3), isforbiddencollabonlyguestfieldupdate (3), bei (3), guestpermissions (3), opted (3), txremovedoc (3), write (3), spacesecuritymiddleware (3), spacecollabbypass (3), einem (3), apply (3), after (3), wrong (3), link (3), will (3), scope (3), did (3), found (3), workspace (3), blocker (3), instead (3), public (3), type (3), removed (3), pass (3), unit (3), v3a (3), activeclasses (3), cast (3), walks (3), getancestors (3), draft (3), input (3), unsent (3), actor (3), denied (3), uses (3), stays (3), second (3), work (3), isprojectjoined (3), render (3), end (3), entries (3), down (3), keep (3), chain (3), opts (3), provideattachedsecurity (3), out (3), verified (3), subscribed (3), containing (3), layers (3), exists (3), _id (3), becomes (3), rule (3), alongside (3), semantics (3), build (3), until (3), two (3), rows (3), clause (3), sql (3), resolvementiongranttarget (3), gate (3), todays (3), driven (3), targetdoc (3), qms (3), love (3), editissue (3), title (3), dates (3), split (3), cancomment (3), gets (3), caneditissue (3), fields (3), too (3), name (3), 10895 (3), insights (3), actions (3), requests (3), settings (3), another (3), window (3), refresh (3), saved (3), documentation (3), feedback (3), grade (3), features (3), copilot (3), solutions (3), explore (3), action (2), manage (2), footer (2), reviews (2), marked (2), lines (2), made (2), development (2), milestone (2), yet (2), labels (2), have (2), free (2), file (2), bidirectional (2), than (2), below (2), more (2), ohne (2), jetzt (2), regression (2), ein (2), deckt (2), drei (2), bypaesse (2), selfcollabbypass (2), auf (2), leak (2), eine (2), der (2), adaptermanager (2), fuer (2), bleibt (2), kein (2), fixes (2), tracking (2), sorry (2), something (2), went (2), reactions (2), markdown (2), commented (2), updatespecials (2), extends (2), views (2), next (2), note (2), array (2), includes (2), threw (2), leaving (2), badge (2), design (2), address (2), findings (2), tiptap (2), emits (2), data (2), dimmed (2), opacity (2), sanity (2), fire (2), specials (2), tracks (2), dep (2), require (2), include (2), import (2), applymentiongrantchoices (2), attrs (2), derived (2), typeof (2), drop (2), 64105d1 (2), covered (2), hierarchy (2), uncovered (2), ancestors (2), production (2), style (2), stub (2), matches (2), intent (2), 8e825a5 (2), onmessage (2), handlecreate (2), cancelling (2), lost (2), boolean (2), submit (2), onchatmessageupdated (2), kept (2), original (2), modifiedby (2), applymentiongrants (2), chuntertrigger (2), nothing (2), runs (2), edited (2), state (2), provenance (2), revoke (2), creation (2), enforcement (2), decision (2), grantees (2), shows (2), markup (2), wins (2), extractreferences (2), keeps (2), attr (2), done (2), dim (2), icon (2), intlstring (2), resolves (2), queries (2), visibleif (2), remains (2), scoped (2), fetched (2), result (2), declaration (2), track (2), index (2), his (2), remain (2), directly (2), acc (2), domain_space (2), hosting (2), naming (2), readable (2), opens (2), subscription (2), appends (2), always (2), first (2), applies (2), even (2), calls (2), additionally (2), maintainer (2), docguest (2), take (2), names (2), api (2), gain (2), channels (2), chatmessageinput (2), attachedto (2), targets (2), case (2), notification (2), direct (2), entry (2), description (2), panels (2), need (2), cancommentonissue (2), creator (2), previously (2), tier (2), additional (2), visible (2), post (2), createaccesslevel (2), unaffected (2), find (2), ancestor (2), isomorphic (2), threadmessage (2), chat (2), subsequent (2), should (2), plan (2), infrastructure (2), surfaces (2), picker (2), 982 (2), architecture (2), skip (2), wants (2), head (2), clipboard (2), quality (2), wiki (2), discussions (2), appearance (2), available (2), searches (2), repositories (2), business (2), advanced (2), developer (2), topics (2), source (2), customer (2), services (2), devops (2), app (2), perform, share, personal, information, cookies, contact, privacy, terms, inc, right, later, queued, multi, pending, been, outdated, order, valid, applying, deleted, viewing, subset, invalid, participant, successfully, merging, close, these, assigned, assignees, reviewers, join, interpreted, compiled, differently, reveals, learn, about, gab, aufloesbarem, zurueck, mutation, erlaubt, aufgeloesten, laesst, sich, mitgliedschaft, beweisen, verboten, decken, 6515433, fehlendem, griff, nur, gast, konnte, loeschen, 7a67e3f, auch, collabreadbypass, entfernten, den, ueberliessen, einschraenkung, einer, klausel, ausschliesslich, existiert, aequivalent, hat, keine, seitige, fuehrte, weglassen, des, filters, lieferte, dokumente, aller, option, neues, capability, dbadapter, supportscollaboratorsecurity, setzt, ermittelt, ueber, getadapterbyname, getadaptername, zustaendige, gated, alle, hinter, zentralen, iscollabbackendsupported, unbekanntes, unterstuetztes, greift, normale, erhalten, feature, ist, dann, inaktiv, akzeptabel, deprecated, tdd, collabspacesecurity, fuehrt, gegen, gemockte, pipeline, prueft, ausgehende, beide, backends, faellt, weg, unsupported, ausgeschlossen, gesamtes, gruen, a8bcff9, 9e09351, chore, repo, formatting, lint, conflicts, a075582, remote, upstream, mentio, july, ready, task, sharing, connected, uberf, 16493, bot, staging, hard, coded, assumes, holds, flip, implicit, behavioral, fff3873, limit, sample, templated, store, cockroach, expression, uuid, typeerror, block, swallowed, throw, broke, mentiontestws, welcome, example, 8299469, 4fc65bd, independent, parsed, violating, parsehtml, normalises, plus, renderhtml, belt, suspenders, emoji, iconned, iconwithemoji, addmentions, hung, confirms, selected, timeout, legacy, miss, stale, got, mid, collabonly, parameter, fails, strict, tsc, jest, replaced, esm, guarded, lets, throws, stay, green, 33fb480, 3f617d0, blockers, introduced, since, double, wrapped, flagged, incompatible, callsites, expect, extra, wrapper, intended, 08db50f, correct, getclasscollaborators, scaffold, patched, classhierarchymixin, isderived, uncoveredclass, reaching, early, returning, inherit, 74d2b01, permission, async, cleared, await, therefore, handleedit, awaits, drops, clears, dispatches, successful, 34bc13a, 3f3902e, preserve, cancelled, rebuilt, current, checked, txprocessor, updatedoc2doc, reflects, authored, 7cb590f, a3a7efb, logic, ones, ops, removes, diff, safely, remove, sourced, removal, deferred, rendered, stream, 650ed5e, 206d6f2, authoritative, asserts, produces, 1c8cd3e, 4b26a76, honour, move, context, knows, checkbox, unchecking, rewrites, pure, left, untouched, 49c5117, 5405d2b, choices, string, referencemarkupnode, referencenode, round, trips, e219510, e8878ac, references, backs, moved, built, object, helpers, mirroring, spec, assertion, perspective, walk, documented, needs, auth, 27d2c58, 765b2eb, persists, moves, reuse, expose, rather, internally, promise, 2227bed, 6a3ab49, lands, fallback, anything, come, silent, dead, projectspacepresenter, derive, four, else, narrowing, control, navigate, elsewhere, collection, etc, here, relaxed, touching, underlying, c76073c, 186c11e, merged, each, spacesnav, ran, resource, returned, hashed, passed, component, immediately, refactor, top, downstream, diagnostic, console, log, helped, extend, attached, reuses, lookup, works, dk3, special, 97b58bd, 7028bbe, could, url, appeared, fires, collects, unique, ids, fetches, narrowed, merges, displayed, skipped, admins, primary, everyone, surfaced, clicking, thanks, earlier, ae40806, attachedtoclass, became, saw, introduces, consistent, whenever, queried, domain_collaborator, requested, receives, row, included, visibly, affected, typically, collaborate, 51fa7ba, 592e78b, allow, collaborat, allowed, strips, foreign, database, ever, defeated, collabres, getsecurityclause, receive, though, role, joins, giving, individual, activitymessage, docupdatemessage, roles, owner, adapters, currently, implement, takes, deployments, fall, 5db9184, 51008bd, let, secured, submitting, whether, messagebox, confirmation, framing, standard, enforced, creates, scripted, replies, root, shown, ab212db, 2fd8e7f, warn, replaces, prior, branches, reply, otherwise, land, routing, dms, ad78e4e, 96a3b58, gra, imports, indirect, webpack, module, resolution, requires, json, pnpm, lock, regenerated, 7c58a56, ce41644, dependencies, able, unlocking, separate, variables, withoutinput, readonly, props, using, 7449ad0, 74ed380, separately, commentonissue, conflated, ended, enabled, permissive, blocked, restrictive, backwards, compat, alias, migrated, migrates, pairs, rejects, layer, route, around, raw, b49c7c5, 05a23bf, utils, guestpermissionsmiddleware, agnostic, triggered, targeted, models, flags, inherits, identical, zero, rules, reach, get, forbidden, try, scenario, modify, editing, oskos, ostrowo, b2ddad6, permissions, updates, lper, depth, capped, nearest, injection, actual, writes, f7b9a99, b195cb3, collaborators, sets, opting, cards, together, bbf25b6, d9f7fca, odel, mirrors, runtime, schema, follows, bare, annotation, pattern, decorators, internal, facing, locale, needed, 9135923, prop, ede2852, wire, tclasscollaborators, indicate, activity, messages, granting, disclosed, unless, itself, preserved, superpowers, plans, accompanying, wiring, fcc426f, ed889ed, dco, compliant, intentionally, squashed, traceability, squash, fine, preferred, unprivileged, intact, table, expected, lists, deployed, hosted, 423, instance, cockroachdb, specifically, exercised, live, deployment, evidence, exit, errors, validate, install, mentiongrantstrigger, mentiongrants, suite, txcreatedoc, sketch, ignores, strictly, retract, anyone, granted, removedoc, passes, values, employee, asks, confirm, dedups, union, comes, batched, marks, hides, projection, filtering, hold, edge, reachable, deep, gymnastics, cooperate, builds, generic, provider, rolling, complete, screenshots, companion, someone, supports, wires, authoring, addcollaborator, contributor, files, changed, checks, options, 785, star, fork, notifications, dismiss, alert, switched, resetting, focus, qualifiers, our, results, quickly, email, contacted, piece, very, seriously, provide, syntax, tips, clear, jump, pricing, premium, ons, powered, collections, trending, archive, program, stars, accelerator, lab, programs, fund, developers, sponsors, partners, trust, center, forum, skills, ebooks, reports, events, webinars, stories, software, topic, industries, government, manufacturing, financial, healthcare, industry, cases, devsecops, modernization, nonprofits, startups, small, medium, teams, enterprises, company, size, marketplace, changelog, blog, why, stop, leaks, start, secret, protection, secure, vulnerabilities, application, instant, dev, environments, codespaces, automate, workflow, workflows, integrate, external, tools, mcp, registry, agents, better, toggle, menu, content,
Text of the page (random words):
reign spaces before the database adapter ever sees the query that defeated the postgres adapter s collabres or branch see postgres src storage ts getsecurityclause a guest who is a collaborator on a single issue in a project they are not a member of would never receive that issue even though the adapter has the sql to surface it this change skips the middleware level space filter when the target class has classcollaborators providesecurity true or provideattachedsecurity true and the caller s role is guest or readonlyguest for those calls the postgres adapter still applies its space membership clause and additionally or joins collaborator records giving the user visibility on the individual docs they were added to directly via providesecurity or via their parent via provideattachedsecurity for activitymessage docupdatemessage all other roles user maintainer owner admin docguest system take the existing code path unchanged note for non postgres adapters the mongo adapter does not currently implement the collab or branch so this bypass only takes effect on postgres deployments the supported production target on mongo the visibility behavior is unchanged from before because there was no collab or clause to fall through to signed off by michael uray michaeluray users noreply github com cherry picked from commit 5db9184 signed off by michael uray michaeluray users noreply github com feat security allow non system callers to read their own collaborat 592e78b or records the tracker subscribed tab in the client queries findall collaborator collaborator self attachedtoclass issue to build the user s subscription list until now that query was silently filtered to spaces the user is a member of so a guest who became a collaborator on an issue in a project they are not a member of e g via the new mentions grant access flow saw an empty subscribed list this change introduces a self collaborator visibility rule consistent across the two enforcement layers foundations server packages postgres src storage ts addsecurity now appends or domain collaborator acc whenever the queried domain is domain_collaborator the user can always see their own collaborator rows foundations server packages middleware src spacesecurity ts findall skips its space pre filter when the requested class is core class collaborator selfcollabbypass so the postgres adapter actually receives the query and can apply its self row or branch other rows in the same workspace remain hidden by the space membership clause that still runs first scope applies to all non admin non system callers users included users were not visibly affected before because they are typically members of every space whose docs they collaborate on but the rule is the same you may read your own subscription rows signed off by michael uray michaeluray users noreply github com cherry picked from commit 51fa7ba signed off by michael uray michaeluray users noreply github com feat security nav list collab only spaces in workbench navigator fo ae40806 r guests a guest who is a collaborator on a doc inside a space they are not a member of e g via the new mentions grant access flow could open the doc directly via url and see it listed in tracker subscribed but the containing project never appeared in the your projects nav tree because that tree only listed member spaces this change extends visibility on three layers foundations server packages postgres src storage ts addsecurity adds an or exists collaborator c where c space space _id and c collaborator acc branch for guest readonlyguest reads against domain_space a space hosting any collaborator record naming the caller becomes readable foundations server packages middleware src spacesecurity ts findall skips its space pre filter when the target class is a space and the caller is guest readonlyguest spacecollabbypass so the new postgres or branch actually fires plugins workbench resources src components navigator svelte a second query against collaborator scoped to self by a6 s self collab visibility rule collects the unique space ids of the caller s collaborator records fetches those spaces narrowed to the navigator s class set and merges them into the displayed spaces alongside member spaces existing member spaces semantics for user admin accounts are unchanged the second query is skipped for admins and members self stays on the primary query for everyone so public but not member projects are not surfaced as a side effect clicking a collab only project still opens the existing issues view which now shows only the docs the user can actually see member or collab on doc thanks to the earlier a5 a6 work components milestones and templates sub nodes will show empty for collab only projects signed off by michael uray michaeluray users noreply github com cherry picked from commit 64105d1 signed off by michael uray michaeluray users noreply github com fix nav surface collab only projects in tracker nav tree 7028bbe the workbench navigator already fetched collab only spaces and merged them into the spaces array but each spacesnav then ran its visibleif resource filter against the entries and tracker s isprojectjoined only returned true for members the result was that collab only projects were correctly fetched hashed and passed to the component then immediately filtered back out before render changes plugins workbench resources src components navigator svelte refactor activeclasses into a top level reactive declaration so svelte tracks it as a dependency in the downstream collab space query drop the diagnostic console log lines that helped track this down plugins tracker resources src index ts extend isprojectjoined return true also when the caller has any collaborator record attached to a doc inside this project reuses a6 self collaborator visibility so the lookup works for guests that are not space members verified end to end against the dk3 test workspace florian guest collab on game 4 only now sees the game design project in his your projects tree with the issues special filtered down to only the docs he is actually a collaborator on components milestones templates remain empty for the same caller signed off by michael uray michaeluray users noreply github com cherry picked from commit 97b58bd signed off by michael uray michaeluray users noreply github com fix tracker nav hide non issues sub nodes on non member projects 186c11e a9 follow up to the mention grants nav tree work when a guest sees a project in your projects because they are a collaborator on a doc inside it a7 or any non member who lands a project in the tree via the new isprojectjoined fallback a8 only the issues sub node has anything to render components milestones and templates have no providesecurity opt in so the postgres collab or branch does not fire on them and the queries come back empty the user sees three silent dead end entries fix in projectspacepresenter derive iscollabonlyproject from space members membership and filter the specials down to id issues when the caller is not a member members keep all four sub nodes the visibleif chain for collab only projects keeps issues and nothing else this is a ui only narrowing backend visibility is unchanged a5 a6 a7 still control what the user can actually see when they navigate elsewhere the postgres adapter still does its filter and the middleware bypass remains scoped to providesecurity classes if a future class opts into providesecurity provideattachedsecurity for a project sub collection components etc the filter here can be relaxed without touching the underlying security model signed off by michael uray michaeluray users noreply github com cherry picked from commit c76073c signed off by michael uray michaeluray users noreply github com feat tracker nav v1 badge tooltip for collab only projects 6a3ab49 reuse the existing iscollabonlyproject reactive to dim the icon 0 6 opacity and expose a tooltip on projects the user only sees via a mention grant rather than membership tooltip uses the use tooltip action so the intlstring resolves internally no promise in an attribute signed off by michael uray michaeluray users noreply github com cherry picked from commit 2227bed signed off by michael uray michaeluray users noreply github com test tracker v2 mention grant persists after issue moves to done 765b2eb regression guard a user mentioned in an issue comment stays a collaborator the record that backs read access after the issue is moved to done built on the sanity page object helpers mirroring the existing mentions spec assertion style guest perspective ui walk is a documented follow up needs a second auth storage state signed off by michael uray michaeluray users noreply github com cherry picked from commit 27d2c58 signed off by michael uray michaeluray users noreply github com feat text core v3a grantsaccess attr on mention references e8878ac add a string grantsaccess true false undefined to referencemarkupnode and surface it on extractreferences with any wins dedup a person is denied only if every reference to them is explicitly false undefined preserves pre v3 grant by default tiptap referencenode keeps the data grants access attribute across editor round trips signed off by michael uray michaeluray users noreply github com cherry picked from commit e219510 signed off by michael uray michaeluray users noreply github com feat chunter v3b per grantee grant choices in send disclosure 5405d2b move the grant decision from the context free mention popup into the send time disclosure which already knows the grant target space members and new grantees the dialog shows a checkbox per new grantee unchecking rewrites every reference to that person in the message markup to grantsaccess false all of them so any wins cannot re grant via the pure applymentiongrantchoices helper existing members mentions are left untouched signed off by michael uray michaeluray users noreply github com cherry picked from commit 49c5117 signed off by michael uray michaeluray users noreply github com feat chunter trigger v3c honour grantsaccess false on mentions 4b26a76 the mention grants trigger now skips collaborator creation for any reference whose grantsaccess is explicitly false set by the v3b send time disclosure undefined still grants pre v3 default this is the authoritative server side enforcement the client disclosure filter is ux only covered by a chuntertrigger unit test that asserts a denied mention produces no collaborator tx signed off by michael uray michaeluray users noreply github com cherry picked from commit 1c8cd3e signed off by michael uray michaeluray users noreply github com feat chunter trigger v3d add only re grant on message edit 206d6f2 add an onchatmessageupdated branch that re runs the mention grant logic on an edited message s new text it only adds collaborator records existing ones dedup to no ops and never removes txupdatedoc carries no pre update state to diff against and collaborator has no provenance to safely remove mention sourced grants by revoke on removal is deferred to a future provenance model shared with the rendered mention revoke stream signed off by michael uray michaeluray users noreply github com cherry picked from commit 650ed5e signed off by michael uray michaeluray users noreply github com fix chunter trigger v3d update grant uses the edit actor add tests a3a7efb onchatmessageupdated rebuilt the message via current message which kept the original author s modifiedby so applymentiongrants system guard checked the wrong actor use txprocessor updatedoc2doc so modifiedby reflects the edit tx add chuntertrigger unit tests for the update path new mention grant denied mention v3c on edit existing collaborator dedup system authored edit grants nothing and non message update no op signed off by michael uray michaeluray users noreply github com cherry picked from commit 7cb590f signed off by michael uray michaeluray users noreply github com fix chunter preserve unsent comment when grant dialog is cancelled 3f3902e v3b made the send flow async the per grantee disclosure popup but onmessage removed the draft and cleared the input before the popup resolved and did not await handlecreate cancelling the grant dialog therefore lost the unsent comment handlecreate handleedit now return a boolean onmessage awaits both and only drops the draft clears the input dispatches submit on a successful send edit signed off by michael uray michaeluray users noreply github com cherry picked from commit 34bc13a signed off by michael uray michaeluray users noreply github com test middleware stub hierarchy getancestors for guest permission un 74d2b01 covered class test isforbiddencollabonlyguestfieldupdate added by 8e825a5 walks the class hierarchy via getclasscollaborators getancestors the uncovered class test scaffold patched classhierarchymixin and isderived but not getancestors so the new code path threw ancestors not found test class uncoveredclass before reaching the production style early return returning from the stub matches the intent an uncovered class has no ancestors to inherit classcollaborators from signed off by michael uray michaeluray users noreply github com fix workbench resources navigator correct activeclasses cast to ref 08db50f class space 64105d1 introduced the activeclasses derived reactive but cast it to ref typeof core class space since typeof core class space is already ref class space that double wrapped the type to ref ref class space which svelte check correctly flagged as incompatible with the collab member query callsites that expect ref class space drop the extra ref wrapper and import class so the cast is to the actually intended ref class space signed off by michael uray michaeluray users noreply github com fix self review blockers important findings 3f617d0 address findings from the independent self code review b new 2 blocker tiptap grantsaccess attribute parsed to null instead of undefined violating the public type true false undefined parsehtml now normalises null undefined default undefined plus the node level renderhtml now explicitly emits data grants access belt and suspenders b new 3 blocker v1 emoji iconned collab only projects were not dimmed the iconwithemoji branch now also carries opacity 0 6 b new 1 blocker sanity addmentions helper hung on the new v3b disclosure popup it now confirms send with selected grants when the dialog appears 1s timeout for the legacy non disclosure path i new 6 important v1 reactive miss updatespecials did not re fire on iscollabonlyproject changes leaving stale specials when the user got added to removed from the project mid session pass collabonly as a parameter so svelte tracks the dep i new 7 important trigger test used require which fails strict tsc the package types only include types jest replaced with esm import i new 8 important applymentiongrantchoices guarded n attrs undefined which lets null through and throws on n attrs id use null instead all 18 mention u...
|