mirror of
https://github.com/makeplane/plane.git
synced 2026-07-13 22:09:12 +02:00
* chore: workspace pages * chore: moved page icons and ui added * chore: deploy board changes * fix: workspace sub page count * fix: added proper creation and redirection in workspace pages * fix: name of var * fix: subpages * fix: fetch subpages in workspace pages * fix root node bug * update recursion with loop * fix: deletion plugin handler for sub pages added * fix: handle multiple sub page deletions * fix: handle multiple delete of deleted pages * fix: collaboration cursor color * chore: wiki sidebar hierarchy * fix: private and archived pages hierarchy * fix: ui, clicking and displaying deleted pages * fix: make the server code more extendable * fix: better handle real time events * fix: handle recursively opening the subpages * fix: better animations while unfurling the nested pages * fix: added breadcrumbs ui for workspace pages * fix: responsiveness of editor toolbar * fix: loading document and storing only when there's content * fix: preview for workspace pages fixed * feat: realtime title updates * feat: added live page collaborators * fix: fetch details on focus and got back old updates * fix: move page workflow fixed * fix: archived at * fix: build errors * fix: build * fix: build errors * fix: revert yarn lock * fix: build * fix: more build errors * fix: saved status for live docs * fix: migration changes * fix: collaborators on click scroll added * fix: restrict access in project list view and workspace sidebar view * fix: public parent pages unfurl as well * fix: title sync handled * fix: archive modal removed and version history added * fix: modal core logo for restricted page fixed * fix: colors * fix: patch ux copy * fix: list item icon * fix: page link and embed component added to space * fix: nested traversing added for replacing embeds * fix: responsiveness and delete redirection * fix: build issues * fix: added loader back * fix: unpublish project page * fix: publish in workspace page * fix: show on when editable in title editor * fix: upublish workspace paegs * fix: random colors fix * fix: owned by added * fix: permission layaer changes * fix: fetch parent pages and update store in project pages * fix: title editor backspace, enter, tab and arrow keys handled * fix: sequential async processing for tasks on different documents * chore: move pages inetrnally * chore: wiki sidebar dnd * chore: dnd patch request added * fix: changed params * chore: update the parent page id * refactor: dnd code * chore: remove wrong rule * fallback: removing nodes if not in subpages endpoint * fix: remove console logs and names * fix: remove more console logs and ui fixes * fix: editor css for nested pages in list * fix: deleted at redirection * patch fix: docker version * fix: additional stuff * fix: removal of drop cursor * style: sidebar dnd ui * fix drop cursor * chore: changed the access controls * fix: realtime events for moving pages * chore: nested pages delete mutations for workspace and project level * chore: updated deleted_at in issue detail types * fix: logger and added working global error handling with sentry * fix: tsup hot reloading * fix: dividing server code * fix: better error handling * fix: file structure for error handling * fix: better error handling for redis client * fix: errors and imports * fix: handlers * chore: updated nested archived, restore and delete pages * chore: updated is_description_empty in the page * chore: broadcasting the nested page mutations * fix: stop event prop on error * chore: current page archive, unarchive and delete * chore: wiki nested list * chore: bulk delete pages = * fix: is_description_empty added for mobile * chore: addes is_description_empty in page types * fix: added title sync capabilities along with migration * fix: navigation between title and main editor made seamless * fix: seperated decorators into it's own package * chore: added title of page in binary request * fix: title saving logic with debounce and abortion handled neatly * fix: not shutting down the app for any reason * chore: restructuring project-page methods, transformers and handlers * fix: title updation with new structure * fix: extensions index ts cleaned up * fix: syncing title using mobx * revert: profile page changes * fix: reverting back extra changes * chore: remove saved saving state * fix: getting back old title to avoid merge conflicts * fix: redis process improved a lot * fix: nested pages endpoints * fix: cleaning up decorators and fixing live server * feat: express decorators for rest apis and websocket * Merge branch 'fix/live-server-restructuring' into fix/live-server-restructuring * feat: express decorators for rest apis and websocket * fix: added package dependency * fix: sync agent up and running * fix: refactor decorators * fix: add missing packages * fix: exit with error 1 * fix: error factory types and document controller error handling * fix: added zod validation * chore: remove js extension * fix: version history shows correct data * chore: removed parent is null in workspace page query * feat: added ability to skip archiving before deleting nodes * fix: title position * fix: syncing changes * fix: build errors * fix: added feature flagging for nested pages * fix: added feature flagging * fix: live build stop * fix: drag handle * chore: added new endpoint to restore page * fix: title sync and animations * fix: title real time sync * chore: restore the deleted version * fix: moving around pages * fix: registering handlers made simplified * fix: common initializer * chore: remove services * fix: reverse changes * fix: page restoration * changed from datetime to timezone Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: removing code duplicacy * fix: getconfig removed * chore: remove repetitive code * fix: type errors * fix: all context errors * fix: removed document registry * chore :removed unuesed config * fix: move server agent to ee * fix: broadcast controller fixed * fix: removed dead code * fix: socket connection getting disconnected * fix:realtime events and their types * fix: realtime events made robust * fix: restore operation * fix: title sync and archiving/etc in project page * chore: updated the version * chore: massively improved typescript inference for realtime events * chore: added deleted page ids in data * fix: types pro max * fix: modified the page ids * fix: change component name for nested page * fix: realtime events duplication * fix: added logs * fix: added common place to differentiate nested pages behaviour * fix: added new flagging * fix: remove page link references * fix: remove page link references * fix: feature flagging * fix: feature flagging * fix: added back missing bits * chore: added the logic to restored the moved page * fix: breadcrumbs loading fixed * chore: added feature flag * fix: transforming headers * fix: page updates * fix: editor body refactored * chore: sorted the pages parent order * fix: duplicate page * fix: common realtime events for all pages * fix: create/fetch page details * fix: better animations and creation of embeds * fix: better loadin animations and better deletion of nodes * fix: better transitions * fix: added event customization * fix: logo props showing wrong data * fix: reverted back changes * fix: workspace store searching * fix: console logs * fix: build errors * fix: more build errors * fix: revert changes * fix: remove not needed code * fix: add access denied to non upgraded users --------- Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com> Co-authored-by: VipinDevelops <vipinchaudhary1809@gmail.com> Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com> Co-authored-by: gurusinath <gurusainath007@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@plane/decorators
A lightweight TypeScript decorator library for building Express.js controllers with a clean, declarative syntax.
Features
- TypeScript-first design
- Decorators for HTTP methods (GET, POST, PUT, PATCH, DELETE)
- WebSocket support
- Middleware support
- No build step required - works directly with TypeScript files
Installation
This package is part of the Plane workspace and can be used by adding it to your project's dependencies:
{
"dependencies": {
"@plane/decorators": "*"
}
}
Usage
Basic REST Controller
import { Controller, Get, Post, BaseController } from "@plane/decorators";
import { Router, Request, Response } from "express";
@Controller("/api/users")
class UserController extends BaseController {
@Get("/")
async getUsers(req: Request, res: Response) {
return res.json({ users: [] });
}
@Post("/")
async createUser(req: Request, res: Response) {
return res.json({ success: true });
}
}
// Register routes
const router = Router();
const userController = new UserController();
userController.registerRoutes(router);
WebSocket Controller
import {
Controller,
WebSocket,
BaseWebSocketController,
} from "@plane/decorators";
import { Request } from "express";
import { WebSocket as WS } from "ws";
@Controller("/ws/chat")
class ChatController extends BaseWebSocketController {
@WebSocket("/")
handleConnection(ws: WS, req: Request) {
ws.on("message", (message) => {
ws.send(`Received: ${message}`);
});
}
}
// Register WebSocket routes
const router = require("express-ws")(app).router;
const chatController = new ChatController();
chatController.registerWebSocketRoutes(router);
API Reference
Decorators
@Controller(baseRoute: string)- Class decorator for defining a base route@Get(route: string)- Method decorator for HTTP GET endpoints@Post(route: string)- Method decorator for HTTP POST endpoints@Put(route: string)- Method decorator for HTTP PUT endpoints@Patch(route: string)- Method decorator for HTTP PATCH endpoints@Delete(route: string)- Method decorator for HTTP DELETE endpoints@WebSocket(route: string)- Method decorator for WebSocket endpoints@Middleware(middleware: RequestHandler)- Method decorator for applying middleware
Classes
BaseController- Base class for REST controllersBaseWebSocketController- Base class for WebSocket controllers
License
This project is licensed under the GNU Affero General Public License v3.0.