Cluster detail
reqlan rq/development
Ideas located under folder reqlan rq/development.
folder
26 ideas
3 files
| Idea | File | Status | Summary | Katz |
|---|---|---|---|---|
| build_prepare | reqlan rq/development/build.rq | Copy TextMate grammars from the language package into extension syntaxes. Sync Cursor agent skills from extension sources into `.cursor/skills`. The orchestrator caches `build:syntaxes` independently and always runs the external Cursor-skill sync before webview and host bundling. | 0.063 | |
| extension_build | reqlan rq/development/build.rq | Production builds for the VS Code extension are orchestrated by [extension_build_script]. Run from the extension package: `pnpm run build` or `node scripts/build.mjs`. Workspace-wide builds also run langium generation and sibling packages via the root `pnpm run build`. Local and F5 builds use [incremental_extension_build]; VSIX prepublish uses the forced path. | 0.040 | |
| extension_bundle | reqlan rq/development/build.rq | The extension host ( `src/extension/main.ts` ) and language server ( `src/language/main.ts` ) are bundled with esbuild per [extension_esbuild]. The host-matching core engine `.node` is staged under `native/` by [extension_host_native_stage] for F5 and for per-target VSIX packaging; it is not inlined into `main.cjs`. Output: CommonJS `.cjs` files under `packages/extension/out/`. `vscode` remains external; a small `Object.groupBy` polyfill is injected for older Node runtimes. | 0.046 | |
| extension_host_native_stage | reqlan rq/development/build.rq | done | Local F5 and `pnpm run build` / `build:ext` stage the host-matching core engine `.node` into `packages/extension/native/` so activation loads the same layout as a per-target VSIX ( [distribution.vsix_export], ["../distribution/native_host_binary.rq".native_host_binary_development] ). The same build copies the `.node` into `packages/analytical-native/<napiSuffix>/` so the workspace optionalDependency matches a production npm install ( [distribution.rust_binary_distribution] ). The orchestrator builds `cargo build -p reqlan-napi -p reqlan-lsp --release` when needed, then copies `reqlan_napi.node` beside the extension. It is not a separate manual install. That command writes `reqlan-lsp` into `crates/target` ( ["../extension/language/support/language-server-rust.rq".language_server_rust] ). Azure compiles the [distribution.native_targets] matrix, then stages those binaries with `prepare-native-packages.mjs --binary-dir` before tests and VSIX packaging. Versions come from git at the `ext/v*` tag. Do not fetch platform packages from npm on Azure ( [distribution.extension_distribution] ). Implementation: ["../../scripts/stage-host-native.mjs"], ["../../scripts/ensure-host-native.mjs"], ["../../packages/extension/scripts/build.mjs"], ["../../azure-pipelines.yml"]. | 0.140 |
| extension_media_build | reqlan rq/development/build.rq | Extension logo assets are generated by ["../../packages/extension/scripts/generate-media.mjs"] from ["../../site/public/logo.svg"]. PNG ( `media/logo.png` ) is tracked in git and used as the packaged icon for marketplace, language file icon, and activity bar ( Azure Marketplace rejects SVG ). WebP and SVG copies remain build outputs ( gitignored ); regenerate via `build:media` when the source logo changes. Invoked as `pnpm run build:media` at the start of [extension_build_script]. | 0.040 | |
| extension_readme_build | reqlan rq/development/build.rq | Generate `packages/extension/README.md` from [extension_readme_script] and README. template. md before VSIX packaging. Marketplace links are resolved from ["../../scripts/phonebook.ts"]; changelog body comes from packages / extension / CHANGELOG. md ( Changesets output ). Invoked as `pnpm run build:readme` at the start of [extension_build_script]. Requirement: ["../distribution/distribution.rq".extension_readme]. | 0.048 | |
| extension_typecheck | reqlan rq/development/build.rq | Extension TypeScript sources are checked with `tsc -b tsconfig.json` before bundling. `noEmit: true` — compilation output comes from esbuild, not tsc. | 0.040 | |
| incremental_extension_build | reqlan rq/development/build.rq | done | Extension builds fingerprint inputs and outputs per independently cacheable artifact: - Langium generated sources / TextMate grammar - logo media - generated marketplace README - each of the five Vite webviews separately - extension-host / language-server esbuild outputs Host napi staging ( [extension_host_native_stage] ) always runs: cargo is incremental locally; Azure stages matrix artifacts and skips a second cargo compile in the package job. A step is skipped only when its command / input fingerprint and current output-content fingerprint both match the cache under `packages/extension/out/`. Missing, changed, or manually edited output invalidates that step. Fingerprint walks skip `node_modules` so Vite scratch files under `.vite-temp` and installed deps do not race or inflate hashes; dependency identity stays in `pnpm-lock.yaml` via shared inputs. Webview output fingerprints cover each complete emitted directory, including future lazy chunks. Host-bundle inputs include bundled phonebook data as well as workspace package output. TypeScript retains its native `tsc -b` project-reference incrementality. TextMate syntax copies are cached by content; Cursor-skill sync still runs because it targets workspace-external state. `pnpm run build:force` / `node scripts/build.mjs --force` bypasses all cache entries. `vscode:prepublish` uses forced mode with `--skip-native` so `vsce package --target` cannot replace a staged per-target `native/` with the packaging agent's host binary ( [distribution.vsix_export] ). `clean` removes `out/`, including the cache, so clean builds remain cold. Root `pnpm run build:ext` delegates only to the extension package. The extension build generates Langium artifacts when their fingerprints change, then its `tsc -b` builds language / analytical project references before downstream fingerprints are evaluated. It does not rebuild unrelated CLI, MCP, site, or test projects. | 0.045 |
| scope | reqlan rq/development/build.rq | extension build steps for local development and CI | 0.040 | |
| typescript_compile | reqlan rq/development/build.rq | done | Langium writes `packages/language/src/generated` ( ast, grammar, module ). That directory is gitignored. `tsc -b tsconfig.build.json` fails on a clean checkout if those files are missing. Root script `build:tsc` is `langium:generate` then that `tsc -b`. Full `pnpm run build` starts with `build:tsc`. GitHub CI, Azure package build, and npm deploy use `build:tsc` so compile matches a clean local build ( [distribution.prerelease_tests], [distribution.ci_gate], [distribution.npm_distribution] ). GitHub CI compiles the TypeScript workspace once in the sequential job, then reuses that emit for [check.check] and package tests ( [check.check_meta_implementation] ). `langium generate` validates ["../../packages/language/langium-config.json"] against the langium-cli schema. langium-cli 4. 3. 0 does not set schema `$id`. jsonschema 1. 5. 0 then throws `ERR_INVALID_URL` for `#/$defs/languageItem` on Node 24. The workspace pins jsonschema 1. 4. 1 for langium-cli in ["../../pnpm-workspace.yaml"] until a langium-cli release includes that `$id`. | 0.045 |
| typescript_emit | reqlan rq/development/build.rq | done | Package TypeScript emit goes to each package `out/` via `tsc -b` project references ( ["../../tsconfig.build.json"] ). Shared compiler options live in ["../../tsconfig.base.json"]. ["../../tsconfig.json"] is a solution file ( `files: []` ) so a plain `tsc` / VS Code " tsc: build " does not write `.js`, `.d.ts`, or `.js.map` next to sources. Webview tsconfigs are `noEmit` — Vite bundles to `packages/extension/media/webviews/`. A clean compile must generate Langium sources first ( [typescript_compile] ). | 0.040 |
| webview_build | reqlan rq/development/build.rq | Svelte webview UI is bundled with Vite per [development_core]. Configs: [ideas_summary_vite_config], [activity_bar_vite_config], [onboarding_vite_config] Output lands in `packages/extension/media/webviews/` for the extension host to load. The onboarding webview inlines ["../../packages/extension/templates/thanks-for-installing.template.rq"] via Vite `?raw` for the in-page language example; the template source stays excluded from the VSIX. Requirement: ["../extension/host/onboarding/page-thanks-for-installing.rq".installation_event]. Watch mode during development: `bash scripts/watch.sh` vite `--watch` alongside tsc and esbuild. | 0.046 | |
| rust_fmt | reqlan rq/development/commit.rq | done | CI runs `cargo fmt --all` in write mode on all crates ( [rust_port.rust_crate_layout], [rustfmt_toml] ). Format is a chore, not a gate: an unformatted tree does not fail the job. On same-repo pull requests, if fmt changes files, CI commits `chore: cargo fmt` and pushes to the PR branch. Fork PRs and `workflow_call` ( release ) only format the working tree; they do not push. Recursion stops because: ( 1 ) pushes with the default `GITHUB_TOKEN` do not start new workflow runs; ( 2 ) a second run finds no diff after fmt, so it does not commit again. Pull requests and the release workflow share the same sequential CI job ( ["../distribution/distribution.rq".ci_gate] ). Git pre-commit runs the same formatter in write mode so local commits stay formatted. Skip when no crate Rust is staged, format in place and restage, skip merge / rebase, `SKIP_RUST_FMT=1` escape hatch. [workspace_package] `prepare` sets `core.hooksPath` to `.githooks`. | 0.081 |
| code_comment_references | reqlan rq/development/core.rq | code comments should include reference to their respective rq references. | 0.054 | |
| current_link_icons | reqlan rq/development/core.rq | Slugs are defined on each link in ["../phonebook.json"]: - `site` → mdi / web - `vsc` → simple-icons / visualstudiocode - `openvsx` → simple-icons / vscodium ( proxy; no Open VSX slug in Simple Icons ) - `github` → simple-icons / github - `discord` → simple-icons / discord - `github-sponsors` → simple-icons / githubsponsors - `email` → mdi / email-outline - `sticker-form` → mdi / sticker-emoji Package entries under `packages` all use simple-icons / npm: - `language`, `analytical`, `cli` | 0.057 | |
| hierarchy_of_requirements | reqlan rq/development/core.rq | user request trumps the ["../../reqlan rq"] requirements, and ["../../reqlan rq"] trump the current implementation. | 0.045 | |
| iconify_stack | reqlan rq/development/core.rq | Icons use Iconify offline — bundled at build time, not fetched from a CDN at runtime. Icon data comes from npm packages listed under the `icons` key in ["../phonebook.json"] per [phonebook_reqs.phonebook_icons]. | 0.080 | |
| modulurisation | reqlan rq/development/core.rq | files should be small | 0.040 | |
| phonebook_icon_keys | reqlan rq/development/core.rq | done | per [phonebook_reqs.phonebook_icons] A phonebook link or package can omit `icon`. If `icon` is present, it is an object with `set` and `name`. Set ids and lookup URLs are canonical in ["../phonebook.json"]. icons. Use each set's `search` URL to find replacement slugs when a name changes or an icon is removed upstream. Typed helpers live in [phonebook_script]: `formatPhonebookIconKey`, `getPhonebookIconSearchUrl`. | 0.048 |
| pnpm | reqlan rq/development/core.rq | Must use pnpm for all js package management across the monorepo ( packages, extension, site ). | 0.045 | |
| pnpm_val | reqlan rq/development/core.rq | done | Root `pnpm run val` chains `check`, then `test`, then `build` ( ["../../package.json"] ). Use for local / ingestion validation ( ["../ingest/ingest.rq"._file] ). | 0.046 |
| rust_mindset | reqlan rq/development/core.rq | - code should be complete - nulls should be safe and deliberate - fallbacks should be used sparingly - incomplete code should be marked as such - comments should describe final desired state of the code, not the current state; they should be timeless. - tests should be local | 0.100 | |
| scope | reqlan rq/development/core.rq | these requirements describe the actual development of the reqlan language and tooling itself | 0.040 | |
| stack | reqlan rq/development/core.rq | - Requirements are documented with reqlan in the ["../../reqlan rq"] folder. - Language grammar truth is ["../../reqlan rq/language/syntax.rq"]; the default editor LSP is Rust ( `reqlan-lsp` ). - Langium in `@reqlan/language` remains a dual-parser oracle and the transitional `node` engine fallback. - VS Code extension host is in ["../../packages/extension"]; open-buffer features run in `crates/reqlan-lsp`. - vscode webviews are implemented with svelte - Extension build pipeline is documented in ["./build.rq"] | 0.045 | |
| succinct | reqlan rq/development/core.rq | maximised meaning to character ratio. | 0.040 | |
| testing | reqlan rq/development/core.rq | tests should have comment references to the requirements they serve to test. per ["../extension/language/comment-references/functional-code-comment-references.rq"] | 0.061 |
Cluster graph
Initialising graph…