Release Notes
Welcome to the Powerhouse release notes! This page contains the complete changelog of all Powerhouse releases, providing you with detailed information about new features, improvements, bug fixes, and breaking changes.
π v5.3.0β
β¨ Highlightsβ
- Authentication & Permissions - CLI authentication and document-level permission system on Switchboard
- Improved code generation with TS Morph and templates - Faster, more reliable code generation and templates are easier to maintain
- Runtime Document Model Subgraphs - No more generated subgraph code to manage
New Featuresβ
CLI Authenticationβ
New CLI commands for authentication workflows:
ph login - Authenticate with your Powerhouse identity
ph login
ph access-token - Generate access tokens for API authentication
ph access-token
Document Permission Serviceβ
A new permission system that provides fine-grained access control at the document level for Switchboard
Key Features:
- Operation Permissions - Control who can perform specific operations on documents
- Document Group Permissions - Organize documents into groups with shared access rules
- Feature Flag - Enable/disable via configuration
The permission service can be enabled via environment variable or configuration. When enabled, all document operations are validated against the permission rules.
Runtime Document Model Subgraphsβ
Document model subgraphs are now automatically available on Switchboard at runtime. Action required: Previously generated subgraphs should be deleted to avoid conflicts.
React Hooks Changesβ
Bug Fixes
- Bug fix: Hooks that return multiple documents now correctly update when any of the documents changes
- Improved React Suspense integration to avoid triggering loading states on every document update
Imperative document hooks
Added useGetDocument and useGetDocuments hooks to allow fetching documents imperatively.
const getDocument = useGetDocument();
const onDocumentSelected = async (id: string) => {
// Document is only fetched when the callback is invoked
const document = await getDocument(id);
};
Handle result of dispatched actions
The dispatch function now accepts two optional callbacks:
onErrors- invoked with any errors thrown by the reducers when processing the actions.onSuccess- invoked with the updated document.
These callbacks are useful to update the UI or perform other actions based on the result of the dispatched action.
Usage:
const [document, dispatch] = useDocumentById(documentId);
dispatch(
myAction,
// Handle errors (e.g., show toast notification)
(errors) => {
alert(errors);
},
// Handle success
(document) => {
console.log("Document updated:", document);
},
);
Migration Stepsβ
ph migrateβ
Run ph migrate to automatically apply some necessary migrations to your project.
Editor Style Updatesβ
The padding added by Connect when displaying the editor has been removed. Each editor is now able to control its own padding.
Delete document model subgraphsβ
Delete the document model subgraphs from your project to avoid conflicts with the automatically generated subgraphs.
vitest.config.ts Configuration Updateβ
For existing projects generated before this release, update your project configuration files to exclude vitest.config.ts from TypeScript compilation and add it to ESLint's allowed project list:
In tsconfig.json:
{
"exclude": ["node_modules", "dist", "eslint.config.js", "vitest.config.ts"]
}
In eslint.config.js:
{
languageOptions: {
parserOptions: {
projectService: {
allowDefaultProject: ["eslint.config.js", "vitest.config.ts"];
}
}
}
}
This prevents issues with package.json imports in vitest.config.ts being copied to the dist folder during compilation.
Bug Fixes and Improvementsβ
Connect UI/UXβ
- Renaming a file now also updates the document name
- Fixed scroll overflow issues in files list
- Better default styling for editors and codegen templates
- Enhanced drive header with info menu, share menu, and Vetra Academy links
Document Exportβ
- Fixed document extension handling when exporting documents
- Improved document response naming consistency
- Better error handling in export functionality
Document Editor Boilerplateβ
- The document editor boilerplate has been updated to provide a better starting point for custom editors.
Documentation (Now also live on https://academy.vetra.io)β
Authorization & Permissions:
- Reactor API Authorization - Role-based access control configuration
- Document Permission System - Fine-grained document-level permissions
Connect Tools:
- Inspector Modal - Database & reactor explorer
Other Updates:
- Updated hooks documentation
- Vetra Studio usage guides
Document Model Subgraphsβ
Document model subgraphs are now available automatically on Switchboard. You should delete the generated subgraphs from your project to avoid conflicts.
π v5.1.0β
β¨ Highlightsβ
- Inspector Tools - New debugging tools for database and sync operations
- Renown Login Component - Improved authentication UI
- Sync Architecture - New reactor client with GraphQL sync channels (WIP π§)
- Cryptographic Signing (Preview) - Document and operation signing capabilities (WIP π§)
New Featuresβ
Inspector Toolsβ
New debugging components inside Connect to help developers understand what's happening under the hood of the reactor:
- DB Explorer - Browse and inspect tables in the local PGlite database
- Remotes Inspector - View configured sync remotes and their status
- Channel Inspector - Debug sync channels of the reactor (inbox, outbox, dead letter queues)
These tools can be enabled via feature flags. See the Inspector Modal documentation for details.
Renown Login Componentβ
Improved authentication UI component with:
- Better user experience for wallet-based authentication
- Playwright end-to-end tests for reliability
- ConnectCrypto and Renown ID now available in hooks
Sync Architecture Improvementsβ
Major improvements to the synchronization system. We are staging big changes ahead of migrating to the new reactor architecture.
- Reactor Client - New client for Connect-to-Switchboard sync
- GraphQL Channels - Push/pull channels for bidirectional sync
- WebSocket Subscriptions - Real-time updates via GraphQL subscriptions
- Conflict Resolution - Improved handling of concurrent modifications
Cryptographic Signing (Preview)β
Initial support for document and operation signing:
- Connect crypto signer and verifier
- Document creation signatures
- All actions can now be signed
Note: This feature is in preview and the API may change in future releases.
Improvementsβ
- Healthcheck Routes - Added
/healthendpoint for Connect and Switchboard for deployment monitoring - Feature Flags System - Global context for managing feature flags across hooks
- Logging Interface - Improved debugging output
- Docker Workflow - Added docker build and publish workflow for Academy
Bug Fixesβ
- Fixed Safari drag-and-drop with empty dataTransfer.items
- Fixed circular imports across multiple packages
- Improved HMR (Hot Module Replacement) for external packages
- Fixed document storage with better id/slug resolution
Documentationβ
- Updated Todo List tutorial with diff-based approach
- New Vetra commands documentation
- Reactor MCP documentation updates
π v5.0.0β
β¨ Highlights
This release introduces four major changes:
- Vetra Development Workflow (
ph vetra) - A complete development environment for building Powerhouse packages - AI-Assisted Package Development - Build document models interactively using Claude Code and Model Context Protocol (MCP)
- New React Hooks - Simplified hooks for document editor development
- React 19 Upgrade - Updated to React 19 with latest features and improvements
New Featuresβ
Vetra Development Workflow (ph vetra)β
A complete development environment for building Powerhouse packages with real-time collaboration and code generation.
What is Vetra?
Vetra provides an integrated development flow that combines:
- Local Switchboard server
- Connect Studio UI for visual editing
- Real-time document synchronization
- Automatic code generation for document models, editors, processors and subgraphs
- Support for remote Vetra drives
Key Features:
- Start a complete development environment with one command:
ph vetra - Hot reload for document models and editors during development (
--watch) - Interactive code generation mode (
--interactive) - Connect to remote drives for collaborative development
Getting Started:
# Start Vetra with defaults
ph vetra
# Development mode with hot reload
ph vetra --watch
# Interactive code generation
ph vetra --interactive
# Connect to a remote drive
ph vetra --remote-drive https://switchboard.phd/d/vetra
AI-Assisted Package Development (Model Context Protocol)β
Build document models interactively using Claude Code through the Model Context Protocol (MCP) server.
What is reactor-mcp?
The reactor-mcp server exposes Powerhouse's document model system to AI assistants like Claude Code, enabling:
- Accessing and interacting with documents available on a Switchboard instance
- Interactive document model creation through conversation
- State schema design assistance
- Operation and reducer implementation
- Document editor UI implementation
- Real-time validation and feedback
Available MCP Tools:
Document Operations:
createDocument- Create a new documentgetDocument- Retrieve a document by IDgetDocuments- List documents in a drivedeleteDocument- Delete a documentaddActions- Add actions to a document
Drive Operations:
getDrives- List all drivesaddDrive- Create a new drivegetDrive- Get a specific drivedeleteDrive- Delete a driveaddRemoteDrive- Connect to a remote drive
Document Model Operations:
getDocumentModels- Get list of available document modelsgetDocumentModelSchema- Get the schema of a specific document model
Getting Started:
- Projects are generated with Claude Code pre-configured:
ph init
- Start Vetra to start the MCP:
ph vetra
- Ask Claude to help build your document model:
"Create a document model for tracking project milestones with completion status, deadlines, and dependencies"
- Claude will guide you through:
- Requirements gathering
- State schema design
- Operation definition
- Reducer implementation
- Code generation
Workflow:
- Describe your requirements to Claude
- Review and approve the proposed design
- Claude creates the model using MCP tools
- Code is generated automatically
- Test and iterate in Vetra environment
BREAKING CHANGESβ
New Hooks-Based State Management Systemβ
The most significant change in v5.0.0 is the introduction of a comprehensive hooks-based state management system. This fundamentally changes how editors should be implemented.
What Changed:
- State management has been moved to reactor-browser hooks
- New hooks for accessing documents, drives, folders, and UI state
- Event-based updates replace direct state manipulation
- Simplified editor implementation patterns
Impact on Editors:
- Document and Drive editors need to adopt the new hook patterns from
@powerhousedao/reactor-browser - Navigation and selection state is now managed through hooks instead of props
Learn More: Complete hooks documentation and examples are available at https://academy.vetra.io/academy/APIReferences/ReactHooks
Migration Required: Existing editors will need to be refactored to use the new hooks API. See Migration Guide below.
React 19 Upgradeβ
This release upgrades to React 19, which includes breaking changes.
What You Need to Know:
- Review the official React 19 upgrade guide: https://react.dev/blog/2024/04/25/react-19-upgrade-guide
- Most React 18 code will continue to work, but deprecated patterns should be updated
- New React 19 features are now available
DocumentToolbar Componentβ
A new DocumentToolbar component is now available for editors to provide standard document operations UI. This replaces the previous config-based approach with a more flexible component-based implementation.
What Changed:
Previously, the document toolbar was configured using editor config parameters:
// Old approach (v4.x)
{
disableExternalControls: true,
documentToolbarEnabled: true,
showSwitchboardLink: true,
timelineEnabled: true,
}
Now, you import and use the DocumentToolbar component directly in your editor:
// New approach (v5.0)
import { DocumentToolbar } from "@powerhousedao/design-system";
<DocumentToolbar
enabledControls={["undo", "redo", "export", "history"]}
/>
Key Features:
- Flexible Control Configuration: Choose which controls to display with
enabledControlsprop - Undo/Redo Operations: Built-in support for document undo and redo
- Export Functionality: Document export with customizable handler
- Revision History: Access to document revision history
- Switchboard Integration: Automatic link generation for remote drives
- Customizable Handlers: Override default behaviors with custom callbacks
Available Controls:
undo- Undo last operationredo- Redo last undone operationexport- Export documenthistory- Show revision history
Migration Steps:
- Remove old config parameters from your editor configuration
- Import
DocumentToolbarfrom@powerhousedao/design-system - Add the component to your editor JSX with desired props
- Customize behavior with optional callbacks (
onClose,onExport,onSwitchboardLinkClick)
ProcessorFactory Signature Changeβ
The ProcessorFactory now takes a PHDocumentHeader instead of a driveId.
Before (v4.x):
export type ProcessorFactory = (
driveId: string,
) => ProcessorRecord[] | Promise<ProcessorRecord[]>;
After (v5.0):
export type ProcessorFactory = (
driveHeader: PHDocumentHeader,
) => ProcessorRecord[] | Promise<ProcessorRecord[]>;
Migration Steps:
- Update your processor factories to take a
PHDocumentHeaderinstead of adriveId - If necessary, regenerate your processor with
ph generateto get the latest changes
Type Parameters Removedβ
The Action type parameters have been removed, Operation type parameters have been removed, and the last PHDocument type parameter has been removed.
Before (v4.x):
const action: Action<MyDocModelActionType, unknown> = {
type: "my-action",
input: {
name: "John Doe",
},
};
After (v5.0):
const action: Action<unknown> = {
type: "my-action",
input: {
name: "John Doe",
},
};
OperationScope Removedβ
Previously, an enum existed called OperationScope that was used to define the scope of an operation. This has been removed and replaced with a string type.
Before (v4.x):
const operation: Operation = {
scope: OperationScope.Global,
};
After (v5.0):
const operation: Operation = {
scope: "global",
};
PHBaseState Changesβ
The PHBaseState type has a number of changes:
- It no longer has a type parameter
documentandauthscopes are now required
Action and Operation Changesβ
The Action and Operation types have a number of changes:
Operationno longer extendsAction, it has one- Some fields have been renamed or removed
ExtendedState Removedβ
This includes createExtendedState, ExtendedStateFromDocument, and CreateExtendedState functions.
IMPROVEMENTSβ
Improved Connect Build Systemβ
The ph connect build and ph connect preview commands have been completely reimplemented.
Key improvements:
- More reliable production builds
- Better handling of external packages
- Improved build performance
- Cleaner build output
Hot Module Replacement (HMR) for External Packagesβ
Development experience has been significantly improved with HMR support for external packages.
What this means:
- Changes to external document models and editors update instantly during development
- Faster iteration cycles when building custom packages
- No more full page reloads when editing external code
Relational Database Processors with Namespacingβ
Operational processors now support namespace isolation per drive.
Key features:
- Each drive gets its own database namespace
- Prevents data conflicts between processors
- Better data organization and querying
- Schema generation with
ph generate schemacommand
MIGRATION GUIDEβ
This release includes several breaking changes. Here's what you need to update:
- Project Structure - Significant changes require creating a new project or applying manual updates
- Document Models - Must be regenerated with new templates
- Editors - Must adopt new hooks-based API
- DocumentToolbar - Config-based approach replaced with component
- ProcessorFactory - Signature change requires updates
- Document Creation - New pattern for creating documents
- Server Interface - Simplified method signatures
Update your projectβ
There are significant breaking changes in the project structure. It is recommended to create a new project from scratch and migrate your code to it. If you wish to migrate manually then follow these steps:
- Update to the latest version with
ph update - Apply these changes: https://github.com/powerhouse-inc/document-model-boilerplate/pull/42/files
Regenerate Document Modelsβ
Run ph generate to regenerate your document models with updated templates.
Note:
It's still possible to generate from zip files, but due to breaking changes in the document structure, zips exported from older versions no longer work.
Instead: use ph generate document-models/<yourdocument>/<yourdocument>.json
Migrate editors to use the new hooksβ
The new hooks-based state management system is the primary breaking change affecting editor implementations.
Editors no longer receive document and dispatch as props and must use the new hooks instead.
Replace state access patterns on editors
// Before
function Editor(props) {
const { document, dispatch } = props;
}
// After
function Editor() {
const [document, dispatch] = useSelectedDocument();
}
React 19 Migrationβ
Refer to the official guide: https://react.dev/blog/2024/04/25/react-19-upgrade-guide
New Document Creation Patternβ
Breaking Change: Documents are no longer created using ADD_FILE operations. Instead, documents now exist independently and are created using the new addDocument method.
Before (v4.x):
// Old pattern: Documents were created via ADD_FILE operations
await server.addDriveAction(driveId, {
type: "ADD_FILE",
input: {
id: documentId,
name: "My Document",
documentType: "my-document-type",
document: documentData,
synchronizationUnits: [...]
}
});
After (v5.0):
// New pattern: Documents exist independently
await server.addDocument(document, meta);
// Then optionally add to drive if needed
await server.addAction(driveId, {
type: "ADD_FILE",
input: {
id: documentId,
name: "My Document",
documentType: "my-document-type",
},
});
Key Changes:
addDocument- New method for creating documentsADD_FILEoperation no longer takes the document state and synchronization units as input- Documents can exist without being part of any drive
- Cleaner separation between document creation and drive organization
Migration Steps:
- Update
ADD_FILEoperations and addaddDocument()calls
IBaseDocumentDriveServer Interface Simplificationβ
The IBaseDocumentDriveServer interface has been simplified to remove the need for passing driveId parameters when interacting with documents. This change improves the API by removing redundant parameters and aligning with the new document-centric approach.
Method Signature Changesβ
The following methods have had their signatures simplified by removing the driveId parameter:
addOperation(driveId, documentId, operation, options)βaddOperation(documentId, operation, options)addOperations(driveId, documentId, operations, options)βaddOperations(documentId, operations, options)queueOperation(driveId, documentId, operation, options)βqueueOperation(documentId, operation, options)queueOperations(driveId, documentId, operations, options)βqueueOperations(documentId, operations, options)queueAction(driveId, documentId, action, options)βqueueAction(documentId, action, options)queueActions(driveId, documentId, actions, options)βqueueActions(documentId, actions, options)getDocument(driveId, documentId, options)βgetDocument(documentId, options)addAction(driveId, documentId, action, options)βaddAction(documentId, action, options)addActions(driveId, documentId, actions, options)βaddActions(documentId, actions, options)
Migration Guideβ
Before (v4.x):
// Old method signatures requiring driveId
await server.addOperation(driveId, documentId, operation, options);
await server.queueActions(driveId, documentId, actions, options);
await server.getDocument(driveId, documentId, options);
After (v5.0):
// New simplified method signatures
await server.addOperation(documentId, operation, options);
await server.queueActions(documentId, actions, options);
await server.getDocument(documentId, options);
Backward Compatibilityβ
Legacy support is maintained - the old method signatures with driveId parameters are still supported but marked as @deprecated. They will be removed in a future release.
When using the old signatures, you'll see deprecation warnings guiding you to the new method signatures. This allows for gradual migration without breaking existing code.
Migration Steps:
- Update your code to use the new method signatures without
driveId - Test your application to ensure all functionality works correctly
- Remove any unused
driveIdvariables from your codebase
Deprecated Drive-Specific Methodsβ
The following drive-specific methods are also deprecated in favor of the standard document methods:
addDriveOperationβ useaddOperationaddDriveOperationsβ useaddOperationsqueueDriveOperationβ usequeueOperationqueueDriveOperationsβ usequeueOperationsqueueDriveActionβ usequeueActionqueueDriveActionsβ usequeueActionsaddDriveActionβ useaddActionaddDriveActionsβ useaddActions
π v4.0.0β
BREAKING CHANGESβ
β οΈ For both the Dspot team & BAI team pull requests have been created that support with the breaking changes β οΈ
BAI team:Contributor Billing Pull Request Dspot Team: Effective-Octo-Adventure
Significant PHDocument refactorβ
- Consolidating header information into the
headerfield of the document. See the PHDocument spec for more details. - Introducing signed and unsigned documents with Ed25519 keys. See the PHDocument signing spec for more details.
Processor generator updatesβ
- The analytics processor template now includes a namespace and batch inserts by default.
- Analytics factories are now in their own files, allowing for multiple factories to be generated.
Additional Migration Guide has been create to help you navigate the breaking change of other packagesβ
PHDocumentchanges:- This version requires that document models be regenerated. This means that you will need to run
ph generateto regenerate thegenfolder for document models. - Document metadata fields (like
id,slug,documentType,created,lastModified, etc) have been moved to aheaderfield of the document. Thus,document.idis nowdocument.header.id. createdandlastModifiedhave been renamed tocreatedAtUtcIsoandlastModifiedUtcIsorespectively.
- This version requires that document models be regenerated. This means that you will need to run
- Processor generator updates:
- A root processor factory is now generated in the
processorsfolder. This will aggregate the collection of all processor factories. It is highly recommended to use this root factory to register all processors. Generating a new processor will put this root factory in place.
- A root processor factory is now generated in the
β¨ Highlights of this release
New features for managing, querying, and analyzing information in real-time. This release focuses on improving data accessibility, enhancing performance, and providing a foundation for advanced analytical insights.
Introducing the Relational Database & Operational Processor System, a new architecture designed to enhance data handling, querying, and synchronization across the host-apps.
2. Relational Database & Operational Processor Systemβ
New Operational Processor Architecture with Namespacing: This introduces a flexible and scalable way to process document operations and transform them into a relational database format. Namespacing ensures conflict avoidance and better organization of data. Database Schema Generation and Migration Support: The system now automatically generates database schemas and supports migrations, simplifying database management and ensuring data consistency. It leverages Kysely for type-safe query construction. Enhanced Analytics Capabilities with Operational Queries: By transforming document data into a relational store, we can now perform complex analytical queries that were previously challenging. This enables more robust reporting and data analysis. Processor Factory System and Root Processor Aggregation: This provides a standardized way to create and manage different types of processors, including those for relational databases, and allows for efficient aggregation of processed data.
β What to try:
- Experiment with generating a new operational database processor using the
ph generatecommand and specify different document types to see how the schema and files are created. - Define a custom database schema and implement an
onStrandsmethod in your processor to index document states into the relational store. - Run tests for your new processor, leveraging the in-memory PGlite instance, to validate the stored state with database queries.
- Generate a GraphQL subgraph to expose your processed data, then try running various GraphQL queries to access and filter your transformed data.
3. Enhanced Analytics & Performance Monitoringβ
Drive and Document Analytics Processors: New processors are in place to specifically handle and prepare data for analytics related to drives and documents, enabling targeted performance monitoring and insights. Real-Time Relational Query: Leveraging PGlite's live query feature, the system now supports real-time queries. This means that as underlying data changes, the results of these queries are updated instantly without requiring a refresh. Performance Improvements in Connect Apps: The integration of the new operational database and live query capabilities directly within the Connect UI significantly improves the performance of data retrieval and display, offering a more responsive user experience for applications built on Connect.
β What to try:
- Observe the real-time data synchronization by making changes to documents in Connect and simultaneously viewing the updates through a GraphQL interface.
- Implement search functionality within your Connect UI using the
createProcessorQueryhook to leverage the new database schema for type-safe queries. - Create or modify documents in Connect and watch how the changes are immediately reflected in your Connect application's display, demonstrating the live query feature.
- Explore building more complex analytical queries that span multiple documents, taking advantage of the relational store's capabilities.
Updates for academy.vetra.ioβ
Documentation & Guides:β
- New: PHDocument Migration Guide - Comprehensive guide to navigate the breaking changes in v4.0.0, including step-by-step migration instructions for the document header restructuring and property access patterns.
- π https://academy.vetra.io/academy/APIReferences/PHDocumentMigrationGuide
- New: Drive Analytics Documentation and Examples - Complete documentation for the new analytics system with practical examples showing how to implement and use drive and document analytics processors.
- π https://academy.vetra.io/academy/MasteryTrack/WorkWithData/drive-analytics
- New: Relational Database & Operational Processor System - Educational content explaining the new architecture for data handling, querying, and synchronization
- π https://academy.vetra.io/academy/APIReferences/RelationalDatabase
- New: Todo-List Processor Tutorial - Try to add a processor to your todo-list demo project
- π https://academy.vetra.io/academy/MasteryTrack/WorkWithData/RelationalDbProcessor
Enhanced Learning Content:β
- Updated: GraphQL at Powerhouse - Documentation updates reflecting the new operational processor architecture and relational database integration.
- Updated: Document Model Creation guides - Updated to reflect the new PHDocument structure and processor generation changes.
- Updated: API References - Updated CLI command documentation (automatically generated) reflecting the new ph generate schema command and other v4.0.0 changes.
π See the CHANGELOG.md in the repository root for the complete technical changelog with all commits and detailed changes. Thank you π Core-dev Team
π v3.2.0β
β¨ Highlights
Drive Analytics Systemβ
- Introducing an analytics system for drives and documents with dedicated processors for tracking operations, changes, and usage patterns.
- Analytics data is automatically collected and stored in dedicated tables, providing insights into document lifecycle and drive activity.
- New analytics query subscriptions enable real-time monitoring of the data in your drive.
β What to try: Explore the new Drive Analytics documentation in the Academy to understand how analytics processors work and how to leverage analytics data in your applications. It currently happens though an initial analytics modal with the Sky-Atlas use case. This will later be adapted to the to-do list demo project.
Update of Front-end Architecture & Performanceβ
- Feature Preview: A new set of hooks were implemented to manage state on a more granular way and avoid unnecessary rerenders.
β What to try: Initial documentation about the hooks can be found here
Feature preview: The new hooks are not fully integrated into Connect yet, however, they can be used in custom drive editors by wrapping the editor component with the new provider:
+import { AtomStoreProvider } from "@powerhousedao/common";
export default function Editor(props: IProps) {
return (
+ <AtomStoreProvider reactor={props.context.reactor}>
<DriveContextProvider value={props.context}>
<WagmiContext>
<BaseEditor {...props} />
</WagmiContext>
</DriveContextProvider>
+ </AtomStoreProvider>
);
}
π Bug Fixesβ
- Fixed drag and drop functionality in the generic drive explorer
- Improved document storage with better id/slug resolution
- Enhanced build process with better Prisma handling and external package management
- Reduced unnecessary logging and improved subscription performance with debounced refetches
- Added safer validation for document properties to prevent runtime errors
- Reimplemented the Switchboard button to open the document model subgraph
Updates for academy.vetra.ioβ
- New: Comprehensive Drive Analytics documentation and tutorial with practical examples
- Update of the Get Started chapter
- Update of the Mastery Track - Document Creation Chapter
- Update of the Mastery Track - Work with Data - Read & Write with the API chapter
- Update of the Mastery Track - Work with Data - Analytics Processor
π v3.1.0β
This release brings improvements to the Cloud Environment Setup Flow, a Connect build, updated PH commands
Ph service setup commandβ
- We have a simplified and optimized script to guide a builder through the setup of his cloud environment with connect & switchboard services.
β
What to try: Try to run the ph service setup flow on a cloud instance on AWS or digital ocean and install a @powerhousedao/todo-demo-package.
https://academy.vetra.io/academy/MasteryTrack/Launch/SetupEnvironment
ph connect build commandβ
- We have implemented
ph connect buildwhich bundles the connect app with the packages installed by the user in production mode.
Configure an Allowlist and add Authorization for Switchboardβ
- Read how to add Authorization to your drive
- Or try to configure your environment
It's now possible to disable the Create New Drive button in Connect.β
- We have introduced PH_CONNECT_DISABLE_ADD_DRIVE=true/false env var in connect. configure your environment https://academy.vetra.io/academy/MasteryTrack/Launch/ConfigureEnvironment
Find your document scalars in the stand-alone Document-Engineeringβ
- https://academy.vetra.io/academy/ComponentLibrary/DocumentEngineering β What to try: Visit the updated https://storybook.powerhouse.academy to see the latest scalar implementations by Dspot.
Performance improvements in Connectβ
- We've optimised the way components render & avoid rerenders which results in a faster, snappier app.
- Optimized the initial loading of Connect for an improved UX
Updates on academy.vetra.ioβ
- Academy moved to the monorepo! So you have more access to code context when writing documentation. π
- We've updated the landing page getting you directly to the 'Get started' section & Tutorial
- Still confused how to create a drive via mutations? 'Configure a drive' is now available to help you out. https://academy.vetra.io/academy/MasteryTrack/BuildingUserExperiences/ConfiguringDrives
- New educational content is present inside the 'Mastery track' guiding you through the advanced ToDoList Demo. https://academy.vetra.io/academy/MasteryTrack/DocumentModelCreation/WhatIsADocumentModel
- The first page inside our API references chapter is now automatically updated with all the latest available commands for the Powerhouse CLI https://academy.vetra.io/academy/APIReferences/PowerhouseCLI
π v1.0.22 β v1.1.0β
This release brings improvements that make it easier to work with the Powerhouse CLI, understand available commands, and develop with greater confidence.
β¨ Highlights
Better CLI Documentation & Helpβ
- You'll notice clearer help messages when you run
ph helporph {command} --help(e.g.ph init --help). We've redesigned the help output to be more readable and useful right from your terminal. - Running
ph --versionnow shows additional context about your CLI installation to help debug or verify your setup.
π View the latest commands documentation in the CLI repository on GitHub (Soon on academy too)
β
What to try: Run ph help or ph init --help and see the improved help output. Check out the online docs if you prefer reading in markdown!
Improved Project Initialization & Dependency Managementβ
ph init,ph setup-globals,ph update, andph usehave improved error handling and clearer messages to guide you through project setup and environment switching.- We'll continue making these commands more interactive with the help of the
interactive-commanderlibrary soon. - Dependency updates to latest versions of
vite,vitest,tailwindcssand more keep your projects aligned with latest versions.
β
What to try: Run ph update in your project to pull in the latest compatible Powerhouse dependencies.
Improved Document Model Editing & Validationβ
- We've made the SDL parsing and schema validation safer and more reliable, reducing cryptic GraphQL errors in the editor, to make document model definition a bit more reliable.
- A drive editor refactor for
DriveEditorContainerandDriveExplorerinside Drive Explorer nowsupport dynamic document model and editor module injection. Giving you a smoother custom drive editor experience.
β What to try: Open a document in Studio mode and test schema edits or validationβerror handling should feel more predictable/not brick your document model.
Cleaner Drive Deletion Across Storagesβ
- Removing a drive from your local storage, filesystem, or browser storage is now more consistent and reliable. You now have unified drive deletion behavior across
BrowserStorage,FilesystemStorage, andMemoryStorageto ensure consistent data cleanup. - You can now delete a drive and immediately recreate a new one with the same ID and slug without issues.
β What to try: Delete a drive and re-add it with the same ID to confirm a clean reset.
π Bug Fixesβ
- Resolved an issue where
ph adddidn't properly clean up installed packages. - Fixed missing type imports and inconsistencies in CLI command modules.
- Addressed redundant drive deletion logic across storage layers.
Complete Changelog & published package version can be found here:
- An overview of the complete changelog of the past weeks can be found here!: https://github.com/powerhouse-inc/powerhouse/commit/e665c1e53dbcbbf7a7a701266522152b9c767f95. (There might be an opportunity here for the other teams to start communicating about their releases too as we are slowly gaining momentum !)
Several updates for: https://academy.vetra.io/ π
- Added page: Setup environment & deployment guide
- Added page: Working with the Supergraph
- Added WIP page: Reusable component & Design System
- Added ph recipes: Editor creation, Supergraphs vs Subgraphs
- Updated Page: Publish packages & Run on cloud server
- Updated Page: Editor & Drive explorer creation
- Starting general spellcheck & consistency in terminology!
Thank you β€οΈ