Skip to content

Monaco editor#607

Merged
Volte6 merged 4 commits into
masterfrom
monaco-editor
Jun 9, 2026
Merged

Monaco editor#607
Volte6 merged 4 commits into
masterfrom
monaco-editor

Conversation

@Volte6

@Volte6 Volte6 commented Jun 9, 2026

Copy link
Copy Markdown
Member

Description

Replaces the plain <textarea> script editor in the admin panel with an embedded Monaco editor, providing syntax highlighting, IntelliSense, and TypeScript-backed autocompletion for GoMud's scripting hooks. The editor is bundled and served locally, fed by an auto-generated TypeScript definition file describing the engine's script objects and event handlers.

Changes

  • Bundled the Monaco editor (vendored vs/ assets) and served it from the admin static path.
  • Added an isolated iframe host (monaco-editor-frame.html/.js) and a ScriptEditor controller (script-editor.js) that embeds the editor inline with a fullscreen "Pop Out" modal, keeping the form <textarea> as the source of truth.
  • Reworked the script section UI across the admin buffs, items, mobs, pets, rooms, and spells pages, replacing the collapsible textarea with the Monaco-backed editor and a "has script" badge.
  • Added a new GET /admin/api/v1/scripting/types.d.ts endpoint that emits TypeScript declarations for engine script objects and event handlers to power editor autocompletion.
  • Extended the scripting schema with explicit ReturnType values and stronger eventDetails parameter types for each script hook.
  • Updated serveAdminStaticFile to serve .js, .css, and .html with explicit content types, preventing MIME sniffing from breaking Monaco assets.
  • Annotated bundled world scripts (buffs, items, mobs, pets, rooms, spells) with JSDoc typings for the new editor IntelliSense, and added new form-change/polymorph scripts.
  • Updated the script wizard to align with the new editor integration.

@Volte6 Volte6 merged commit 677261e into master Jun 9, 2026
6 of 7 checks passed
@Volte6 Volte6 deleted the monaco-editor branch June 9, 2026 00:03
Volte6 pushed a commit that referenced this pull request Jun 9, 2026
## Context

- Current release automation mixes mutable prereleases with stable releases, making tag and asset policy hard to verify.
- Prereleases should move with `master`; stable releases should be manual, protected, and immutable.
- Release targets, checksums, notes, uploads, and attestations were duplicated across workflow steps.
- Local CI needed one documented path for workflow lint, YAML lint, Go checks, JS lint, and `act` dry runs.
- This branch is rebased on #607 and preserves the Monaco editor work.

## Changes

- Splits release automation into `CI`, `Prerelease`, and `Stable Release` workflows.
- Publishes rolling prereleases automatically from `master` to the mutable `prerelease` tag.
- Publishes stable releases manually, draft-first, with semver tag/release reuse checks.
- Runs Go tests on PRs, but release cross-compiles only after merge to `master`.
- Centralizes release asset metadata in `.github/scripts/release-assets.sh`.
- Adds helper scripts for release builds, asset assembly, checksums, notes, and provenance text.
- Tidies shared Go actions and Makefile targets, including local CI, JS lint, and `fmtcheck`.
- Excludes vendored Monaco files from JSHint while preserving the editor implementation.
- Updates release docs and keeps `PLAN.md` local-only.

## Validation

- `make js-lint`
- `make ci-local`

## Review Notes

- Draft because this changes release policy and local CI behavior.
- Focus review on tag immutability, asset names, permissions, and prerelease/stable behavior.
- Rebased after #607, so the PR no longer removes Monaco editor files.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant