Re-derive the audit structurally — 57 decorative
The count moved 58 -> 52 -> 47 -> 57 because every version hard-coded a list of gate-helper names and the codebase has more than anyone can recall. Six were mis...
Dock popup windows beside the page scrollbar, not on top of it
Tool windows are fixed to the viewport and dock right-to-left from its edge, and the layout was told about exactly one thing occupying that edge: the interactio...
The SHARE_DOCS_* client-side-only gap is closed
resolve-alias in DocsService and the two member-search endpoints in SecurityService now enforce these four server-side, mirroring the dialog's isTeamMember-or-r...
Give the deck its slide back, without the lurch
Dropping `layout` to stop the card lurching onto the edge of the screen also took the sibling slide with it: dismissing a card left the rest snapping into its p...
Stop the reminder lurching to the screen edge when an option opens
The card kept framer's `layout` after it grew a fold-out options panel. `layout` animates size and position by transform, so that one height change was being an...
47 unenforced — five more were falsely reported
CREATE_ORG_CALENDAR_EVENTS is enforced: MemberCalendarService throws OrgCalendarForbiddenException when a member without it writes to the org calendar. The chec...
52 unenforced, not 58 — six were falsely reported
The audit's gate detection recognised hasRight and checkRight but not denyUnless, hasAnyRight, sessionHasRight or forbidden. Six rights that ARE enforced were t...
Stagger the cascade, add branch bulk actions, explain the rule
The cascade highlight now travels the chain instead of flashing every affected row at once. enabledAncestors already arrives nearest-first, so the index IS the ...
Make the emoji picker's search actually filter
The picker's search matched the query against the translated category name only, and fell back to pushing every emoji into the results when nothing matched — so...
Show and enforce the permission hierarchy in all five editors
Five editors granted 199 rights as five flat lists of checkboxes, and none of them showed that one right can be a prerequisite for another. Granting a child wit...
Sticky scrollbars, a toolbar that never scrolls, and a dialog that clears the note
Three things, all in the floating sticky. The scrollbar was still grey. The rules were written as **************** which styles only the element CARRYING the c...
Stop the launchpad backdrop painting over the page scrollbar
The launchpad is the only page that renders the full-bleed Backdrop, and it was the only page whose scrollbar stayed invisible after the -webkit-/standard confl...
Repaint the reminder in the org's colour, open its options in place
The card is the organisation's primary colour now, with every mark on it drawn in --on-primary rather than a literal white — a white-label org that picks a pale...
The sticky's watermark is centred from the moment it opens
It only landed correctly after the note was resized. The measurement used getBoundingClientRect, which reports the PAINTED box — and a sticky opens by animating...
Centre the sticky's watermark on the writing surface
It was centred on the whole note, so it sat high — pulled up behind the title bar — and in rich mode it drifted further every time the toolbar wrapped to a seco...
Legal & Compliance settings tab with the org default legal text
A new tab on /settings/features/hrs holding Default Legal Text, linked from the settings menu and the settings launchpad. Creating a package on /hr/legal-compli...
Rich text in the sticky and the previews, and a mode you can switch
A note now says whether it is rich text or plain text, and both the editor and the floating sticky can switch it. The floating note in rich mode embeds the ver...
One page for the notifications and the controls over them
The notifications page wore a header of its own — an eyebrow, a title and three pill buttons inside a bordered card — while every neighbouring page (the account...
The history becomes a page, and the bell rings
The bell opened a popover, which is the right shape for "what just happened" and the wrong one for "what did that reminder say on Tuesday". A panel hanging off ...
The floating sticky's pin is the same pin /notes draws
The sticky was drawing a hand-rolled bookmark path while the notes wall, the editor, the rail and the bulk bar had all moved to MUI's PushPin — outlined when lo...
Stop the page scrollbar's two halves cancelling each other out
The main content scroller declared both **************** and a block of `::-webkit-scrollbar` rules, on the theory that whichever the browser understood would w...
Rebuild /notes as a paper wall with a split-pane editor
The page was the last screen still on raw Tailwind blue-600/gray-50 while everything around it moved to the house system, and every one of its ~100 `dark:` vari...
Pin and unpin a note from its floating sticky
The sticky could recolour, rename, minimize, maximize and close a note but not pin it — so pinning meant going back to /notes for the one thing the note is alre...
Draw the main content scrollbar, in the org's colour
html/body are pinned to height:100%, so the element that actually scrolls a page is the main content div in layout.tsx — and it carried no scrollbar styling at ...
Hold a launchpad card's pin chip back until its pane arrives
The panes reveal themselves on scroll (whileInView, opacity 0 -> 1), but the pin control is a sibling overlay rather than part of that animation — it has to be,...
One quiet-hours window, governing both notification channels
There were two. The pair near the top of the page silenced the in-app cards; the pair at the bottom silenced the missed-message emails. Nothing on screen said t...
Two meanings of 100% — a reading width, and the whole pane
The percentage reset to one baseline: the page grown to the pane but capped at 920px, which on a wide monitor leaves the sheet floating in a lot of empty desk. ...
Refresh the NavTop clock the moment the editor saves
Voiding the punch a member is currently clocked in under already leaves them OFF server-side: RosterService.clockState reads the latest LIVE punch and skips voi...
Solid sticky paper, and a scrollbar in the note's own colour
The note's background faded to `rgba(0,0,0,0.045)` at one corner. That is not a shade — it is 95% TRANSPARENT, so the corner of a sticky showed the page scrolli...
Zoom the document, and grab it to move it
A floating capsule in the bottom-right of the document pane: −, the current percentage, +. The READOUT IS THE RESET — a separate reset button would be a third c...
Pinned notes on the launchpad, colour rotation, and a proper send-off
Three things. Pinned notes reach the home launchpad. Every note pinned on /notes gets a chip there in its own sticky colour, with a short preview; clicking one...
Notification settings across the width, with a working model
It was one 760px column of switch rows, which reads as a form to fill in rather than something to tune — and on a wide screen left two thirds of the page empty ...
Stop the docket flickering a scrollbar, and centre the step counter
THE FLICKER. The docket row set `overflow-x: auto` and left the other axis alone — but CSS computes `overflow-y: visible` to `auto` the moment the other axis is...
Notifications become a tab on the member's own profile
They were a page of their own at /settings/notifications, which put a preference about one person somewhere other than the page about that person — and left the...
Sign a package at /settings/sign, on a route of its own
Signing was inline on the member's profile tab, so the document sat under the settings tab strip AND the compliance sub-tab strip AND that tab's help panel — th...
Remember each floating note's size and position per device
Reopening a detached note now puts it back exactly where it was left, at the size it was left, on that screen. Placement is per DEVICE, deliberately. Which not...
Sign inside the app shell, behind one page header
The wizard opened as a fullScreen MUI Dialog, so signing a package threw the member out of the product: NavTop and NavPri were covered, there was no rail and no...
Catch npm silently dropping Next's native SWC binary
The image build died in `next build` with Downloading swc package @next/swc-linux-x64-gnu... unhandledRejection TypeError: terminated (UND_ERR_SOCKET)...
The lead on a callback is read, not remembered — and a call can be reopened
Two things, both about a calendar event being a poor place to keep a copy of somebody else's record. The event dialog now reads the lead from the CRM. Its name...
Floating notes become a second class of hex head window
Hex heads now back two kinds of window: the popup tool windows they always did, and floating notes. Minimize replaces the old roll-up — a minimized sticky leave...
A control that actually opens what produced the event
The callback's description carried "Open the lead: /leads/view/123" as text, and text in a textarea cannot be clicked — the event dialog edits its description i...
Callbacks on the calendar, and a marker on the list
Two ways to see a call you promised to make without opening the lead. On the calendar, a callback gets its own line item rather than looking like any other app...
Stop the event dialog throwing "Invalid time value" on open
wallClockToInstant called toISOString() on a date it had not checked, so any unreadable input threw RangeError instead of returning something unusable. The dia...
Let "not established" be a value the images gate can see
Follows EmailService boxing **************** A folder listing now reports null for it rather than a primitive's false, so the types here admit null and the gate...
A notification centre, on every page
Reminders had nowhere to arrive. The calendar's popup was a plain alert in the top corner of whichever page happened to be open, it vanished on a timer, and any...
Detach notes into draggable, resizable floating stickies
Each note in the list (and the editor) gets a detach control that pops it onto a screen-wide overlay. Any number can float at once; each can be dragged anywhere...
Stop flashing the external-images prompt at members who allow them
Opening a message showed the "display external images" banner for a moment and then withdrew it, for anyone who had already chosen to allow images everywhere. ...
Fold the back arrow and book icon into the header title
The /kb body repeated the gradient header title verbatim. Drop the duplicate, move its book icon onto the h1 and park the back arrow to the right of it.
Ask for the unread count, not the whole folder tree
The mail badge needs one integer and was fetching every folder in the mailbox to find it, which on the IMAP providers is the most expensive call the mail backen...
Je, unaona nini kuhusu usafiri?
Kila kitu kinaingia kwenye tovuti yako mwenyewe. Anza kwenye mpango wa bure na usome ukurasa huu tena katika mwezi mmoja.
