Skip to content
Open
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
Binary file not shown.
Empty file.
Binary file not shown.
21 changes: 21 additions & 0 deletions .beads/issues.jsonl

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions docs/EDITOR_SETTINGS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Editor Keyboard Shortcuts

| Shortcut | Action |
|----------|--------|
| Ctrl+S | Save current scene |
| Ctrl+Z | Undo last action |
| Ctrl+Y | Redo last undone action |
| Ctrl+D | Duplicate selected node(s) |
| Delete | Delete selected node(s) |
| Ctrl+C | Copy selected node(s) |
| Ctrl+V | Paste copied node(s) |
| Ctrl+X | Cut selected node(s) |
| F5 | Play main scene |
| F6 | Play current scene |
| F7 | Pause playback |
| F8 | Stop playback |
| Q | Select tool |
| W | Move tool |
| E | Rotate tool |
| S | Scale tool |

## Theme Settings

The editor supports **Dark** and **Light** themes, selectable via the Settings dialog (gear icon in toolbar). Theme choice is persisted in editor settings and applied on load.

## Physics FPS

Configurable physics tick rate: 30, 60 (default), or 120 FPS. Set via the Settings dialog.

## Panel Layout

Panel sizes are automatically persisted when resized and restored on editor reload.
80 changes: 63 additions & 17 deletions engine-rs/crates/gdeditor/EDITOR_SETTINGS.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,74 @@
# Editor Settings & Preferences Surface

Documents the current configurable settings exposed by the editor.
Documents all configurable settings exposed by the Patina editor.

## Current Settings (Supported)
## CLI Settings

| Setting | How to set | Default | Notes |
|---------------|-----------------------------|-------------|------------------------------------|
| Port | `--port <PORT>` CLI flag | `8080` | TCP port the HTTP server listens on |
| Scene path | Positional CLI argument | `""` | Path to `.tscn` file to open on start |
| Viewport size | Hardcoded in initial state | `640 × 480` | Canvas render dimensions |
| Setting | How to set | Default | Notes |
|------------|--------------------------|-------------|---------------------------------------|
| Port | `--port <PORT>` CLI flag | `8080` | TCP port the HTTP server listens on |
| Scene path | Positional CLI argument | `""` | Path to `.tscn` file to open on start |

## Future Settings (Deferred — editor maintenance only until runtime parity exits)
## Editor Display Settings (Settings Dialog)

The following settings are **not yet implemented** and are deferred until the
engine reaches ≥98% oracle parity across all supported scenes:
Accessible via the gear button (`btn-settings`) or Edit > Preferences menu item.

- **Theme** — light/dark/custom color scheme for the editor shell
- **Auto-save** — periodic scene auto-save interval
- **Layout** — panel positions, sizes, and visibility (scene tree, inspector, etc.)
- **Snap grid** — snap-to-grid interval for viewport placement
- **Keybindings** — remappable editor keyboard shortcuts
| Setting | Element ID | Type | Default | Range / Values |
|-----------------|--------------------|---------|----------|-----------------------------------|
| Grid Snap | `set-grid-snap` | bool | `false` | on / off |
| Snap Size | `set-snap-size` | int | `16` | 1 - 256 px |
| Grid Visible | `set-grid-visible` | bool | `true` | on / off |
| Rulers Visible | `set-rulers-visible`| bool | `true` | on / off |
| Font Size | `set-font-size` | int | `13` | 8 - 32 px |
| Theme | `set-theme` | enum | `"dark"` | `"dark"`, `"light"` |
| Physics FPS | `set-physics-fps` | int | `60` | 1 - 240 |

## Viewport State (Runtime)

These are not persisted settings but live state that affects the viewport.

| Property | Description | Default |
|-----------------|--------------------------------------|----------------|
| Viewport Width | Canvas render width | `640` |
| Viewport Height | Canvas render height | `480` |
| Viewport Zoom | Current zoom level (1.0 = 100%) | `1.0` |
| Viewport Pan | Current pan offset (x, y) in pixels | `(0.0, 0.0)` |
| Viewport Mode | Tool mode for viewport interaction | `Select` |
| Editor Mode | Active mode string | `"select"` |

## Project Settings (API)

Accessible via `GET /api/project_settings` and `POST /api/project_settings`.
Stored in `project_settings.json` in the project root.

| Setting | Type | Default | Description |
|--------------------|--------|---------------|----------------------------------------|
| project_name | String | `""` | Display name of the project |
| main_scene | String | `""` | Path to the main scene file |
| window_width | int | `1024` | Game window width |
| window_height | int | `600` | Game window height |
| physics_fps | int | `60` | Target physics frames per second |
| gravity | float | `980.0` | Default gravity for 2D physics |
| default_gravity_vector | Vec2 | `(0, 1)` | Direction of default gravity |

## Inspector Features

| Feature | Description |
|----------------------|----------------------------------------------------------|
| Property search | Filter properties by name in the inspector panel |
| Multi-object editing | Edit shared properties across multiple selected nodes |
| Export vars | Display `@export` variables parsed from attached scripts |
| History navigation | Back/forward buttons to revisit previously inspected nodes |
| Resource info | Resource type and path displayed in inspector toolbar |

## Output Panel

| Setting | Type | Default | Description |
|-------------------------|------|---------|---------------------------------------|
| MAX_FRONTEND_LOG_ENTRIES| int | `200` | Max log entries displayed in output panel before oldest are pruned |

## Scope Note

Per `AGENTS.md`, no new editor feature work is permitted until runtime parity
exits are met. Settings listed above as "future" must not be implemented as
production features; placeholder stubs are acceptable for testing purposes only.
exits are met. Settings listed here reflect the current implementation state.
Any additions beyond maintenance fixes require gate clearance.
Loading
Loading