SShortSingh.
Back to feed

DirectSurface 0.1.0 brings dockable, Canvas-based workspace UI framework to npm

0
·1 views

A developer has released DirectSurface 0.1.0, an MIT-licensed TypeScript package on npm that enables building desktop-style browser workspaces using the HTML Canvas API. The framework offers layouts, dockable panels, data grids, charts, forms, and overlay management, targeting data-heavy back-office applications where consistent control behavior across long sessions is critical. It was created to reduce the application-level state coordination overhead the author encountered when using Vue and React for dense, multi-view interfaces. The release includes a live demo featuring a project delivery workbench and a Canvas workspace with a 10,000-row scrollable grid, both built using the public package API. Notably, this version does not support assistive-technology accessibility, as Canvas controls are not exposed as semantic DOM elements, making it unsuitable for content sites requiring native page semantics.

Read the full story at DEV Community

This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)

Log in to join the discussion and vote.

Log in

Related stories

0
ProgrammingDEV Community ·

Microsoft Agent 365 Now Supports n8n Workflow Agents With Entra ID Governance

Microsoft Agent 365 has officially added n8n as a supported third-party agent partner, allowing workflow automations built on n8n to operate inside Microsoft 365 applications such as Teams, Outlook, Word, and SharePoint. Each n8n agent runs with its own Entra ID, placing it within Microsoft's identity and governance framework rather than as a standalone automation. The integration is documented in Microsoft's official Agent 365 third-party agents pages and can be configured through the Microsoft 365 admin center. In this model, n8n handles the agent's operational logic and runtime, while Agent 365 provides the identity management, governance, and observability layer. The confirmed capability gives organisations a structured, repeatable path to deploy workflow-based agents within everyday workplace tools, without treating each new automation as a separate, disconnected deployment.

0
ProgrammingDEV Community ·

Proposed Azure Operations Copilot Would Bring Cloud Monitoring Into Microsoft Teams

A developer proposal outlines an Azure Operations Copilot integrated directly into Microsoft Teams to streamline cloud incident management. The concept aims to give engineers a single conversational interface to monitor, investigate, and understand Azure issues without switching between multiple tools. When an alert arrives via Azure Monitor, users could query it and explore related data instantly within Teams chat. The proposal covers an initial scope of core monitoring features with a future scope that includes triggering approved runbooks. The stated goal is to make Teams a convenient starting point for Azure operations rather than a replacement for the Azure portal.

0
ProgrammingDEV Community ·

JavaScript's 7 Primitive Data Types Explained for Beginners

JavaScript organizes its data into two broad categories, with primitive types being the foundational building blocks every beginner should learn first. The seven primitive data types are String, Number, BigInt, Boolean, Undefined, Null, and Symbol, each serving a distinct purpose in storing and representing values. Notable distinctions include BigInt for handling very large integers beyond Number's safe range, and Symbol for generating guaranteed-unique identifiers. A commonly misunderstood quirk is that typeof null returns 'object', even though null is officially a primitive — a known historical oddity in the language. Grasping these basics provides a stronger foundation for tackling more advanced JavaScript concepts like variables, conditions, and beyond.

0
ProgrammingDEV Community ·

Angular Tutorial Chapter 6: Distinguishing Null, Reset, and Destroy in Feature Lifecycle

An Angular tutorial chapter explains that clearing data and ending a feature are fundamentally different operations, each requiring a distinct API call. The chapter introduces three operations — replaceState(null), reset(), and destroy() — to make lifecycle intent explicit rather than inferred from empty UI state. replaceState(null) commits an intentional null while keeping the feature active, reset() returns the runtime to a neutral reusable state, and destroy() permanently finalizes the feature instance. The tutorial enforces a strict ownership boundary where the service controls all lifecycle operations and the FeatureCell, while the component handles only temporary UI state. This design prevents ambiguity in scenarios like user sign-out, account switching, or screen teardown, which can all appear identical on screen but carry different lifecycle meanings.