Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/fresh-moons-explode.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@triplex/editor-next": patch
"@triplex/server": patch
"@docs/triplex": patch
---

Triplex WebXR is now available for everyone, see: https://triplex.dev/docs/building-your-scene/webxr.
7 changes: 7 additions & 0 deletions .changeset/tender-trains-promise.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@triplex/editor-next": patch
"@triplex/server": patch
"@docs/triplex": patch
---

The debug panel is now available for everyone, see: https://triplex.dev/docs/building-your-scene/console-logs/debug-panel.
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,6 @@ app: Triplex for VS Code
description: Log data from anywhere in your components to the debug panel.
---

## Enabling the Feature

The debug panel is an experimental feature. To enable it you need to turn on the feature gate inside your [Triplex config](/docs/api-reference/config-options):

```json {2-4} filename=".triplex/config.json"
{
"experimental": {
"debug_api": true
}
}
```

## Installation

To get types for the debug panel you need to install a package then update your `tsconfig.json` / `jsconfig.json` to inject global Triplex types.
Expand Down
12 changes: 0 additions & 12 deletions apps/docs/pages/docs/building-your-scene/webxr.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,6 @@ description: View and edit your 3D components in WebXR.

import { VRGogglesIcon } from "@triplex/ux/icons";

## Enabling the Feature

Triplex WebXR is an experimental feature in active development. To enable it you need to turn on the feature gate inside your [Triplex config](/docs/api-reference/config-options):

```json {2-4} filename=".triplex/config.json"
{
"experimental": {
"xr_editing": true
}
}
```

<KnowledgeCallout>
The renderer code for Triplex WebXR is open source and [available on
GitHub](https://github.com/trytriplex/triplex/tree/main/packages/renderer/src/features/webxr).
Expand Down
10 changes: 0 additions & 10 deletions apps/docs/public/config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,6 @@
},
"experimental": {
"description": "Unstable experimental features that are still in development. Use with caution.",
"properties": {
"debug_api": {
"description": "Enables the debug panel.\n\nSee: https://triplex.dev/docs/building-your-scene/console-logs/debug-panel",
"type": "boolean"
},
"xr_editing": {
"description": "Enables Triplex WebXR support for 3D components.\n\nSee: https://triplex.dev/docs/building-your-scene/webxr",
"type": "boolean"
}
},
"type": "object"
},
"files": {
Expand Down
4 changes: 2 additions & 2 deletions apps/docs/public/sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@
</url>
<url>
<loc>https://triplex.dev/docs/building-your-scene/webxr</loc>
<lastmod>2026-01-22</lastmod>
<lastmod>2026-01-25</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
Expand Down Expand Up @@ -247,7 +247,7 @@
</url>
<url>
<loc>https://triplex.dev/docs/building-your-scene/console-logs/debug-panel</loc>
<lastmod>2026-01-22</lastmod>
<lastmod>2026-01-25</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
Expand Down
6 changes: 1 addition & 5 deletions examples/mecha/.triplex/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,5 @@
"components": ["../src/components/*.tsx"],
"files": ["../src/**/*.tsx"],
"provider": "./provider.tsx",
"renderer": "../../../packages/renderer/src/index.tsx",
"experimental": {
"xr_editing": true,
"debug_api": true
}
"renderer": "../../../packages/renderer/src/index.tsx"
}
3 changes: 1 addition & 2 deletions examples/react-only/.triplex/config.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
{
"$schema": "https://triplex.dev/config.schema.json",
"experimental": { "xr_editing": true }
"$schema": "https://triplex.dev/config.schema.json"
}
1 change: 0 additions & 1 deletion examples/test-fixture/.triplex/config.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"$schema": "https://triplex.dev/config.schema.json",
"components": ["../src/geometry/**/*.tsx"],
"experimental": { "debug_api": true, "xr_editing": true },
"files": ["../src/**/*.tsx"],
"provider": "./provider.tsx"
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
* see this files license find the nearest LICENSE file up the source tree.
*/

import { fg } from "@triplex/lib/fg";
import { useDialogs } from "../../stores/dialogs";
import { Feedback } from "../feedback";
import { OpenInWebXR } from "../webxr";
Expand All @@ -17,7 +16,7 @@ export function Dialogs() {
return <Feedback />;
}

if (shownDialog === "open_in_xr" && fg("xr_editing")) {
if (shownDialog === "open_in_xr") {
return <OpenInWebXR />;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import {
type MenuControl,
} from "@triplex/bridge/host";
import { cn } from "@triplex/lib";
import { fg } from "@triplex/lib/fg";
import {
ButtonControl,
ButtonGroupControl,
Expand Down Expand Up @@ -277,7 +276,7 @@ export function FloatingControls() {
onClick={() => showDialog("help")}
/>
</Surface>
{fg("xr_editing") && (
{
<Surface bg="overlay" className="border p-0.5" direction="horizontal">
<IconButton
actionId="scene_frame_reset"
Expand All @@ -286,7 +285,7 @@ export function FloatingControls() {
onClick={() => showDialog("open_in_xr")}
/>
</Surface>
)}
}
</div>
);
}
3 changes: 1 addition & 2 deletions packages/@triplex/editor-next/src/features/panels/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
*/
import { LayersIcon, Pencil2Icon } from "@radix-ui/react-icons";
import { cn } from "@triplex/lib";
import { fg } from "@triplex/lib/fg";
import { useScreenView } from "@triplex/ux";
import { Suspense, useEffect, useRef, useState } from "react";
import { IconButton } from "../../components/button";
Expand Down Expand Up @@ -149,7 +148,7 @@ export function Panels() {
</div>
<div className="h-1.5" />
</ScrollContainer>
{fg("debug_api") && <DebugPanel />}
<DebugPanel />
</Suspense>
</div>
</ResizableSurface>
Expand Down
17 changes: 2 additions & 15 deletions packages/@triplex/server/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,21 +162,8 @@ export interface TriplexConfig {
* Unstable experimental features that are still in development. Use with
* caution.
*/
experimental?: {
/**
* Enables the debug panel.
*
* See:
* https://triplex.dev/docs/building-your-scene/console-logs/debug-panel
*/
debug_api?: boolean;
/**
* Enables Triplex WebXR support for 3D components.
*
* See: https://triplex.dev/docs/building-your-scene/webxr
*/
xr_editing?: boolean;
};
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
experimental?: {};
/**
* An array of relative path globs to select what files can be opened by
* Triplex. You can define multiple roots. Found files will be available to
Expand Down
9 changes: 2 additions & 7 deletions packages/@triplex/server/src/util/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*/
import { readdirSync, readFileSync } from "node:fs";
import { join, normalize, resolve } from "@triplex/lib/path";
import { array, boolean, object, optional, parse, string } from "valibot";
import { array, object, optional, parse, string } from "valibot";
import {
type ReconciledTriplexConfig,
type SecretTriplexConfig,
Expand All @@ -26,12 +26,7 @@ const schema = object({
assetsDir: optional(string()),
components: optional(array(string())),
define: optional(object({})),
experimental: optional(
object({
debug_api: optional(boolean()),
xr_editing: optional(boolean()),
}),
),
experimental: optional(object({})),
files: optional(array(string())),
provider: optional(string()),
publicDir: optional(string()),
Expand Down
Loading