Skip to content

Conversation

@hatemhosny
Copy link
Collaborator

@hatemhosny hatemhosny commented Dec 17, 2025

What type of PR is this? (check all applicable)

  • ✨ Feature

Description

This PR adds support for MiniZinc language

@sharno I would appreciate it if you can have a look (thank you for letting me know about MiniZinc!)

http://minizinc.livecodes.pages.dev/?template=minizinc

Summary by CodeRabbit

  • New Features

    • MiniZinc added: editor syntax & completions, selectable language, in-browser runtime (init/run/getSolvers), and a MiniZinc starter template; Prolog editor support added.
  • Documentation

    • New MiniZinc docs and language info page; English translations/labels added.
  • Chores

    • Updated supported-languages badge, bumped vendor URLs, added MiniZinc vendor entry and license, and integrated MiniZinc into formatting tooling.
  • Other

    • Added a small page-load helper utility.

✏️ Tip: You can customize this high-level summary in your review settings.

@netlify
Copy link

netlify bot commented Dec 17, 2025

Deploy Preview for livecodes ready!

Name Link
🔨 Latest commit 0d35428
🔍 Latest deploy log https://app.netlify.com/projects/livecodes/deploys/6958a6fb4fad26000824e466
😎 Deploy Preview https://deploy-preview-931--livecodes.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Dec 17, 2025

Deploying livecodes with  Cloudflare Pages  Cloudflare Pages

Latest commit: 0d35428
Status: ✅  Deploy successful!
Preview URL: https://e637e866.livecodes.pages.dev
Branch Preview URL: https://minizinc.livecodes.pages.dev

View logs

@github-actions
Copy link
Contributor

github-actions bot commented Dec 17, 2025

Size Change: +6.67 kB (+0.66%)

Total Size: 1.02 MB

Filename Size Change
./build/livecodes/embed.js 90.1 kB +274 B (+0.31%)
./build/livecodes/lang-minizinc-script.js 2.06 kB +2.06 kB (new file) 🆕
./build/livecodes/monaco-lang-minizinc.js 1.74 kB +1.74 kB (new file) 🆕
./build/livecodes/monaco-lang-prolog.js 580 B +580 B (new file) 🆕
./build/livecodes/templates.js 26.4 kB +1.05 kB (+4.12%)
ℹ️ View Unchanged
Filename Size Change
./build/404.html 1 kB 0 B
./build/app.html 250 B 0 B
./build/index.html 2.46 kB +3 B (+0.12%)
./build/livecodes/app.css 22.4 kB 0 B
./build/livecodes/app.js 111 kB +17 B (+0.02%)
./build/livecodes/assets.js 8.62 kB -25 B (-0.29%)
./build/livecodes/assets/noop.js 18 B 0 B
./build/livecodes/assets/templates/diagrams-starter.html 2.19 kB 0 B
./build/livecodes/backup.js 3.73 kB +4 B (+0.11%)
./build/livecodes/blockly.js 13.4 kB +73 B (+0.55%)
./build/livecodes/broadcast.js 1.19 kB 0 B
./build/livecodes/bundle-types.js 4.36 kB -9 B (-0.21%)
./build/livecodes/code-to-image.js 9.09 kB -30 B (-0.33%)
./build/livecodes/codejar.js 17.6 kB -1 B (-0.01%)
./build/livecodes/codemirror.js 6.37 kB +44 B (+0.7%)
./build/livecodes/compile.page.js 2.4 kB +17 B (+0.71%)
./build/livecodes/compile.worker.js 14.5 kB +92 B (+0.64%)
./build/livecodes/compiler-utils.js 3.17 kB -2 B (-0.06%)
./build/livecodes/custom-editor-utils.js 198 B 0 B
./build/livecodes/deploy.js 6.9 kB +1 B (+0.01%)
./build/livecodes/editor-settings.js 17.9 kB +86 B (+0.48%)
./build/livecodes/embed-ui.js 5.55 kB 0 B
./build/livecodes/export.js 3.89 kB 0 B
./build/livecodes/firebase.js 22.7 kB 0 B
./build/livecodes/format.worker.js 13.6 kB +79 B (+0.58%)
./build/livecodes/google-fonts.js 7.12 kB 0 B
./build/livecodes/headless.js 78.5 kB +19 B (+0.02%)
./build/livecodes/i18n-ar-language-info.json 5.25 kB 0 B
./build/livecodes/i18n-ar-translation.json 9.33 kB 0 B
./build/livecodes/i18n-bn-language-info.json 5.63 kB 0 B
./build/livecodes/i18n-bn-translation.json 9.63 kB 0 B
./build/livecodes/i18n-de-language-info.json 5.3 kB 0 B
./build/livecodes/i18n-de-translation.json 9.44 kB 0 B
./build/livecodes/i18n-en-language-info.json 4.63 kB +74 B (+1.62%)
./build/livecodes/i18n-en-translation.json 8.05 kB +21 B (+0.26%)
./build/livecodes/i18n-es-language-info.json 5.04 kB 0 B
./build/livecodes/i18n-es-translation.json 9.17 kB 0 B
./build/livecodes/i18n-fa-language-info.json 5.42 kB 0 B
./build/livecodes/i18n-fa-translation.json 9.48 kB 0 B
./build/livecodes/i18n-fr-language-info.json 5.21 kB 0 B
./build/livecodes/i18n-fr-translation.json 9.42 kB 0 B
./build/livecodes/i18n-hi-language-info.json 5.82 kB 0 B
./build/livecodes/i18n-hi-translation.json 9.95 kB 0 B
./build/livecodes/i18n-id-language-info.json 4.79 kB 0 B
./build/livecodes/i18n-id-translation.json 8.69 kB 0 B
./build/livecodes/i18n-it-language-info.json 5.08 kB 0 B
./build/livecodes/i18n-it-translation.json 9.26 kB 0 B
./build/livecodes/i18n-ja-language-info.json 5.63 kB 0 B
./build/livecodes/i18n-ja-translation.json 9.61 kB 0 B
./build/livecodes/i18n-nl-language-info.json 4.96 kB 0 B
./build/livecodes/i18n-nl-translation.json 8.9 kB 0 B
./build/livecodes/i18n-pt-language-info.json 5.08 kB 0 B
./build/livecodes/i18n-pt-translation.json 9.35 kB 0 B
./build/livecodes/i18n-ru-language-info.json 5.6 kB 0 B
./build/livecodes/i18n-ru-translation.json 10.3 kB 0 B
./build/livecodes/i18n-tr-language-info.json 5.2 kB 0 B
./build/livecodes/i18n-tr-translation.json 9.24 kB 0 B
./build/livecodes/i18n-ur-language-info.json 5.86 kB 0 B
./build/livecodes/i18n-ur-translation.json 9.78 kB 0 B
./build/livecodes/i18n-zh-CN-language-info.json 4.94 kB 0 B
./build/livecodes/i18n-zh-CN-translation.json 8.64 kB 0 B
./build/livecodes/i18n.js 20.4 kB -23 B (-0.11%)
./build/livecodes/import-src.js 16.2 kB +118 B (+0.73%)
./build/livecodes/import.js 14.7 kB +120 B (+0.83%)
./build/livecodes/index.js 5.36 kB +6 B (+0.11%)
./build/livecodes/lang-art-template-compiler.js 1.65 kB 0 B
./build/livecodes/lang-assemblyscript-compiler.js 290 B 0 B
./build/livecodes/lang-assemblyscript-script.js 386 B 0 B
./build/livecodes/lang-astro-compiler.js 2.34 kB 0 B
./build/livecodes/lang-clio-compiler.js 1.55 kB 0 B
./build/livecodes/lang-commonlisp-script.js 123 B 0 B
./build/livecodes/lang-cpp-script.js 1.74 kB -10 B (-0.57%)
./build/livecodes/lang-cpp-wasm-script.js 2.84 kB +1 B (+0.04%)
./build/livecodes/lang-csharp-wasm-script.js 2.18 kB 0 B
./build/livecodes/lang-diagrams-compiler-esm.js 5.09 kB -1 B (-0.02%)
./build/livecodes/lang-dot-compiler.js 1.66 kB 0 B
./build/livecodes/lang-ejs-compiler.js 1.63 kB 0 B
./build/livecodes/lang-eta-compiler.js 1.65 kB 0 B
./build/livecodes/lang-fennel-compiler.js 1.61 kB 0 B
./build/livecodes/lang-gleam-compiler.js 3.09 kB +2 B (+0.06%)
./build/livecodes/lang-go-wasm-script.js 3.25 kB 0 B
./build/livecodes/lang-haml-compiler.js 1.65 kB 0 B
./build/livecodes/lang-handlebars-compiler.js 1.95 kB +36 B (+1.88%)
./build/livecodes/lang-imba-compiler.js 147 B 0 B
./build/livecodes/lang-java-script.js 4.05 kB -1 B (-0.02%)
./build/livecodes/lang-jinja-compiler.js 1.65 kB 0 B
./build/livecodes/lang-julia-script.js 3.31 kB +11 B (+0.33%)
./build/livecodes/lang-liquid-compiler.js 1.68 kB 0 B
./build/livecodes/lang-lua-wasm-script.js 205 B 0 B
./build/livecodes/lang-malina-compiler.js 2.96 kB +2 B (+0.07%)
./build/livecodes/lang-mustache-compiler.js 1.65 kB 0 B
./build/livecodes/lang-nunjucks-compiler.js 1.96 kB +31 B (+1.61%)
./build/livecodes/lang-perl-script.js 268 B 0 B
./build/livecodes/lang-php-wasm-script.js 347 B 0 B
./build/livecodes/lang-postgresql-compiler-esm.js 1.73 kB 0 B
./build/livecodes/lang-prolog-script.js 204 B 0 B
./build/livecodes/lang-pug-compiler.js 371 B 0 B
./build/livecodes/lang-python-wasm-script.js 1.86 kB 0 B
./build/livecodes/lang-r-script-esm.js 2.44 kB 0 B
./build/livecodes/lang-rescript-compiler-esm.js 2.16 kB 0 B
./build/livecodes/lang-rescript-formatter.js 1.52 kB 0 B
./build/livecodes/lang-riot-compiler.js 2.81 kB 0 B
./build/livecodes/lang-ruby-wasm-script.js 1.71 kB +6 B (+0.35%)
./build/livecodes/lang-scss-compiler.js 1.71 kB 0 B
./build/livecodes/lang-solid-compiler.js 263 B 0 B
./build/livecodes/lang-sql-compiler.js 1.64 kB 0 B
./build/livecodes/lang-sql-script.js 1.95 kB +1 B (+0.05%)
./build/livecodes/lang-svelte-compiler.js 4.69 kB -1 B (-0.02%)
./build/livecodes/lang-tcl-script.js 1.82 kB 0 B
./build/livecodes/lang-teal-compiler.js 1.72 kB 0 B
./build/livecodes/lang-twig-compiler.js 1.64 kB 0 B
./build/livecodes/lang-vento-compiler.js 1.68 kB 0 B
./build/livecodes/lang-vue-compiler.js 6.09 kB +1 B (+0.02%)
./build/livecodes/lang-vue2-compiler.js 3.48 kB +3 B (+0.09%)
./build/livecodes/lang-wat-compiler.js 348 B 0 B
./build/livecodes/lang-wat-script.js 1.58 kB 0 B
./build/livecodes/language-info.js 7.92 kB +138 B (+1.77%)
./build/livecodes/monaco-lang-astro.js 947 B 0 B
./build/livecodes/monaco-lang-clio.js 639 B 0 B
./build/livecodes/monaco-lang-imba.js 7.35 kB 0 B
./build/livecodes/monaco-lang-wat.js 2.46 kB 0 B
./build/livecodes/monaco.js 10.2 kB +70 B (+0.69%)
./build/livecodes/open.js 6.2 kB +4 B (+0.06%)
./build/livecodes/processor-lightningcss-compiler.js 1.88 kB 0 B
./build/livecodes/processor-postcss-compiler.js 2.02 kB 0 B
./build/livecodes/processor-tailwindcss-compiler.js 5.24 kB -2 B (-0.04%)
./build/livecodes/processor-unocss-compiler.js 355 B 0 B
./build/livecodes/processor-windicss-compiler.js 450 B 0 B
./build/livecodes/quill.css 697 B 0 B
./build/livecodes/quill.js 5.8 kB 0 B
./build/livecodes/resources.js 3.43 kB -1 B (-0.03%)
./build/livecodes/result-utils.js 1.17 kB 0 B
./build/livecodes/share.js 3.81 kB 0 B
./build/livecodes/snippets.js 6.05 kB +15 B (+0.25%)
./build/livecodes/sync-ui.js 3.26 kB -4 B (-0.12%)
./build/livecodes/sync.js 3.52 kB -3 B (-0.09%)
./build/livecodes/sync.worker.js 29.7 kB -3 B (-0.01%)
./build/sdk/livecodes.js 3.96 kB 0 B
./build/sdk/livecodes.umd.js 4.02 kB 0 B
./build/sdk/package.json 291 B 0 B
./build/sdk/react.js 4.26 kB 0 B
./build/sdk/vue.js 4.35 kB 0 B

compressed-size-action

@coderabbitai
Copy link

coderabbitai bot commented Dec 18, 2025

Walkthrough

Adds first-class MiniZinc support: editor language definitions (Monaco/CodeMirror), language specs and browser runtime, starter template, vendor URLs and Prettier plugin, i18n/docs updates, build entries, SDK type additions, a DOM-ready utility, and a README badge tweak.

Changes

Cohort / File(s) Summary
Documentation & License
README.md, vendor-licenses.md, src/livecodes/html/language-info.html, docs/docs/languages/minizinc.mdx, docs/docusaurus.config.ts
README badge updated; MiniZinc docs and language-info section added; minizinc-js license added; typedoc plugin skipErrorChecking: true added.
Monaco Language Modules
src/livecodes/editor/monaco/languages/monaco-lang-minizinc.ts, src/livecodes/editor/monaco/languages/monaco-lang-prolog.ts
New Monaco language definitions: MiniZinc (config, Monarch tokenizer, completion provider) and Prolog (config, tokenizer).
Monaco Integration
src/livecodes/editor/monaco/monaco.ts
CustomLanguageDefinition extended with optional completions; registers custom language modules and conditionally registers completion providers.
CodeMirror Integration & UI
docs/src/components/LanguageSliders.tsx, src/livecodes/editor/codemirror/editor-languages.ts, docs/src/components/TemplateList.tsx
Added MiniZinc (and Prolog) module URLs and lazy-loading entries; UI language sliders and template list include MiniZinc.
Language Specs & Runtime
src/livecodes/languages/minizinc/lang-minizinc.ts, src/livecodes/languages/minizinc/index.ts, src/livecodes/languages/languages.ts, src/livecodes/languages/minizinc/lang-minizinc-script.ts
New minizinc LanguageSpecs and barrel export; added to exported languages; browser runtime script exposing livecodes.minizinc API (init/run/solve/getSolvers) that loads vendor runtime and processes text/minizinc script tags.
Templates & Starter
src/livecodes/templates/starter/minizinc-starter.ts, src/livecodes/templates/starter/index.ts
New MiniZinc starter template exported and added to starterTemplates; template UI integrates with livecodes.minizinc.
Build & Vendors
scripts/build.js, src/livecodes/vendors.ts, src/livecodes/languages/prettier.ts
Build entries updated to include minizinc/prolog modules and runtime; vendor base URLs bumped; added minizincUrl and prettierMinizincUrl; Prettier parser plugin registered for MiniZinc.
i18n / Translations
src/livecodes/i18n/locales/en/language-info.lokalise.json, src/livecodes/i18n/locales/en/language-info.ts, src/livecodes/i18n/locales/en/translation.lokalise.json, src/livecodes/i18n/locales/en/translation.ts
Added MiniZinc name/description/link and starter template translation entries.
SDK Types & Public Surface
src/sdk/models.ts, src/livecodes/UI/command-menu-actions.ts
SDK types extended to include 'minizinc', 'mzn', 'dzn'; ParserName and Compiler.scriptType updated; command menu starter templates include minizinc.
Utilities
src/livecodes/utils/utils.ts
Added exported helper onLoad(fn) that runs callback immediately if document is ready or on window load.
Misc / Barrels
src/livecodes/languages/minizinc/index.ts, src/livecodes/templates/starter/index.ts
Barrel exports updated to re-export new MiniZinc modules and include starter in exports.

Sequence Diagram(s)

sequenceDiagram
    participant User as Page / UI
    participant Starter as Starter Template
    participant LC as livecodes.minizinc
    participant Vendor as Minizinc runtime (vendor)

    User->>Starter: Click "Run" / provide data
    Starter->>LC: livecodes.minizinc.run({dzn?, json?, config?})
    rect `#dbeffd`
    LC->>Vendor: dynamic import / initialize runtime
    Note right of LC: collect <text/minizinc> scripts\nassemble model & files
    LC->>Vendor: invoke solver with model + options
    end
    Vendor-->>LC: results / errors
    LC-->>Starter: result payload / error
    Starter-->>User: render output or error
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'add minizinc language support' accurately and concisely summarizes the main objective of the pull request, which is to add support for the MiniZinc language throughout the codebase.
✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cf098a4 and 2b8a82f.

📒 Files selected for processing (4)
  • src/livecodes/html/language-info.html
  • src/livecodes/i18n/locales/en/language-info.lokalise.json
  • src/livecodes/i18n/locales/en/language-info.ts
  • src/sdk/models.ts
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/livecodes/html/language-info.html
  • src/livecodes/i18n/locales/en/language-info.lokalise.json
  • src/livecodes/i18n/locales/en/language-info.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Redirect rules - livecodes
  • GitHub Check: Header rules - livecodes
  • GitHub Check: Pages changed - livecodes
  • GitHub Check: build
  • GitHub Check: tests (24.x, 5)
  • GitHub Check: tests (24.x, 1)
  • GitHub Check: tests (24.x, 4)
  • GitHub Check: tests (24.x, 2)
  • GitHub Check: tests (24.x, 3)
  • GitHub Check: build (24.x)
  • GitHub Check: build (24.x)
  • GitHub Check: Cloudflare Pages
🔇 Additional comments (4)
src/sdk/models.ts (4)

1090-1092: LGTM!

The Language union correctly includes the MiniZinc language name and both standard file extensions (mzn for model files, dzn for data files), following the established pattern for other languages.


1262-1263: LGTM!

Adding minizinc to ParserName enables Prettier formatting support for MiniZinc files, consistent with the Prettier plugin integration mentioned in the PR.


1364-1364: LGTM!

The text/minizinc script type follows the established convention for language-specific MIME types used with custom script tags.


1459-1459: LGTM!

The minizinc template name is correctly added to enable the MiniZinc starter template, following the alphabetical ordering of the union.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
src/livecodes/templates/starter/minizinc-starter.ts (1)

31-55: Consider hardening result handling for unexpected MiniZinc outputs

run() assumes result.solution.output is always present when status !== 'ERROR'. If the runner ever returns other statuses or missing solution, this will throw. A small guard would make the starter more robust, e.g. check result.solution && result.solution.output before accessing nested properties and fall back to a generic message.

📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1e168fe and a38b42c.

⛔ Files ignored due to path filters (1)
  • src/livecodes/assets/templates/minizinc.png is excluded by !**/*.png
📒 Files selected for processing (24)
  • README.md (1 hunks)
  • docs/src/components/LanguageSliders.tsx (1 hunks)
  • docs/src/components/TemplateList.tsx (1 hunks)
  • scripts/build.js (2 hunks)
  • src/livecodes/UI/command-menu-actions.ts (1 hunks)
  • src/livecodes/editor/codemirror/editor-languages.ts (2 hunks)
  • src/livecodes/editor/monaco/languages/monaco-lang-minizinc.ts (1 hunks)
  • src/livecodes/editor/monaco/languages/monaco-lang-prolog.ts (1 hunks)
  • src/livecodes/editor/monaco/monaco.ts (2 hunks)
  • src/livecodes/html/language-info.html (1 hunks)
  • src/livecodes/i18n/locales/en/language-info.lokalise.json (1 hunks)
  • src/livecodes/i18n/locales/en/language-info.ts (1 hunks)
  • src/livecodes/i18n/locales/en/translation.lokalise.json (1 hunks)
  • src/livecodes/i18n/locales/en/translation.ts (1 hunks)
  • src/livecodes/languages/languages.ts (2 hunks)
  • src/livecodes/languages/minizinc/index.ts (1 hunks)
  • src/livecodes/languages/minizinc/lang-minizinc-script.ts (1 hunks)
  • src/livecodes/languages/minizinc/lang-minizinc.ts (1 hunks)
  • src/livecodes/languages/prettier.ts (1 hunks)
  • src/livecodes/templates/starter/index.ts (2 hunks)
  • src/livecodes/templates/starter/minizinc-starter.ts (1 hunks)
  • src/livecodes/vendors.ts (3 hunks)
  • src/sdk/models.ts (4 hunks)
  • vendor-licenses.md (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (7)
src/livecodes/languages/prettier.ts (1)
src/livecodes/vendors.ts (1)
  • vendorsBaseUrl (5-6)
src/livecodes/templates/starter/minizinc-starter.ts (1)
src/sdk/models.ts (1)
  • Template (1379-1386)
src/livecodes/templates/starter/index.ts (1)
src/livecodes/templates/starter/minizinc-starter.ts (1)
  • minizincStarter (3-168)
src/livecodes/languages/languages.ts (1)
src/livecodes/languages/minizinc/lang-minizinc.ts (1)
  • minizinc (4-19)
src/livecodes/languages/minizinc/lang-minizinc.ts (3)
src/sdk/models.ts (1)
  • LanguageSpecs (1200-1213)
src/livecodes/languages/prettier.ts (1)
  • parserPlugins (4-15)
scripts/build.js (1)
  • baseUrl (40-40)
src/livecodes/languages/minizinc/lang-minizinc-script.ts (1)
src/livecodes/vendors.ts (1)
  • minizincUrl (301-301)
src/livecodes/editor/monaco/monaco.ts (1)
scripts/build.js (1)
  • baseUrl (40-40)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Redirect rules - livecodes
  • GitHub Check: Header rules - livecodes
  • GitHub Check: Pages changed - livecodes
  • GitHub Check: tests (24.x, 2)
  • GitHub Check: tests (24.x, 3)
  • GitHub Check: tests (24.x, 1)
  • GitHub Check: tests (24.x, 4)
  • GitHub Check: tests (24.x, 5)
  • GitHub Check: build (24.x)
  • GitHub Check: build
🔇 Additional comments (31)
vendor-licenses.md (1)

151-152: LGTM!

The license entry for minizinc-js with MPL-2.0 is correctly formatted and properly placed in alphabetical order.

README.md (1)

16-16: LGTM!

Language count badge correctly updated to reflect the addition of MiniZinc.

scripts/build.js (2)

163-164: LGTM!

Monaco language definitions for MiniZinc and Prolog correctly added to the ESM build entry points, following the established pattern for other custom languages.


233-233: LGTM!

MiniZinc script correctly added to the IIFE build, consistent with other language runtime scripts in this section.

src/livecodes/editor/codemirror/editor-languages.ts (1)

37-38: LGTM!

Module URLs for MiniZinc and Prolog correctly added following the established pattern.

src/livecodes/editor/monaco/monaco.ts (3)

257-258: LGTM!

MiniZinc and Prolog correctly added to the custom languages map using the established URL pattern with build-time hash replacement.


263-267: Clean extension of the interface.

The optional completions field is a well-designed addition that enables custom languages to provide autocomplete functionality without breaking existing language definitions.


296-298: LGTM!

The completion provider registration is correctly guarded and follows the same pattern as the existing config and tokens registrations.

src/livecodes/editor/monaco/languages/monaco-lang-prolog.ts (3)

1-26: LGTM!

The language configuration is well-structured with proper comment syntax, bracket pairs, and auto-closing/surrounding pairs for Prolog.


27-60: LGTM!

The tokenizer setup with atom/variable patterns and built-in predicates list provides good coverage for Prolog syntax highlighting.


107-124: LGTM!

The sub-states for block comments and strings are correctly implemented with proper escape handling and state transitions.

src/livecodes/templates/starter/index.ts (1)

40-40: LGTM! MiniZinc starter template integration follows the established pattern.

The import and export are correctly placed and consistent with other starter templates in the codebase.

Also applies to: 140-140

src/livecodes/languages/minizinc/index.ts (1)

1-1: LGTM! Standard barrel export.

This follows the established pattern for language module exports in the codebase.

docs/src/components/TemplateList.tsx (1)

69-69: LGTM! Template list entry is correctly structured.

The MiniZinc template entry follows the established pattern and is positioned consistently with other language integrations.

docs/src/components/LanguageSliders.tsx (1)

109-109: LGTM! Language slider entry is correct.

The MiniZinc entry is properly added to the script languages list with correct structure and positioning.

src/livecodes/i18n/locales/en/translation.ts (1)

1-1: Translation entry looks correct, but verify the editing workflow.

The MiniZinc translation entry is properly structured and positioned. However, note that line 1 indicates this is an auto-generated file. Ensure that manually editing this file is the correct approach, or if translations should be added through a different mechanism (e.g., via the source file referenced in the comment).

Also applies to: 1023-1023

src/livecodes/UI/command-menu-actions.ts (1)

326-326: LGTM! Command menu action entry is correctly placed.

The MiniZinc entry is properly added to the starter templates list with consistent positioning.

src/livecodes/languages/prettier.ts (1)

14-14: Parser plugin entry looks correct, but verify file availability.

The MiniZinc parser plugin entry is properly structured and follows the pattern of other custom parser plugins. However, ensure that prettier/parser-minizinc.js exists or will be available in the vendors bundle at the specified URL.

src/livecodes/html/language-info.html (1)

921-952: No action needed. Verification confirms only one MiniZinc section exists in the file at line 921. The AI summary's claim of duplicate sections is inaccurate.

src/livecodes/vendors.ts (3)

5-7: Vendor base URL bump is internally consistent

The new vendorsBaseUrl aligns with the Prettier parserPlugins.minizinc path under the same @live-codes/browser-compilers@0.22.6/dist/ base, so the MiniZinc parser URL wiring is coherent with existing patterns.


93-93: CodeMirror base URL bump looks safe and localized

codeMirrorBaseUrl only updates the version path and remains consistent with other vendor constants; no behavioral risks apparent from this change alone.


301-302: MiniZinc runtime URL wiring matches vendor conventions

minizincUrl follows the same getUrl('<pkg>@<version>/dist/...') convention as other runtimes, which should make it straightforward to consume from the MiniZinc language/runtime layer.

src/livecodes/templates/starter/minizinc-starter.ts (1)

3-24: Template metadata and markup wiring are consistent

Template name, i18n key (templates.starter.minizinc), thumbnail path, and basic markup structure (logo, data textarea, output area) all follow existing starter-template conventions.

src/livecodes/i18n/locales/en/language-info.ts (1)

219-223: MiniZinc language-info entry matches existing patterns

The minizinc block mirrors surrounding language entries in shape and style (desc/link/name), so it will integrate cleanly with the language-info typing and UI.

src/livecodes/i18n/locales/en/translation.lokalise.json (1)

2699-2702: Starter template translation key is correctly wired

"templates.starter.minizinc" matches the key used in minizincStarter and follows the naming of other starter entries, so localization will resolve as expected.

src/livecodes/languages/languages.ts (1)

44-45: MiniZinc is correctly registered in the language registry

Importing minizinc and adding it to the languages array ensures it participates in language discovery and configuration alongside Prolog/PostgreSQL/etc.

Also applies to: 170-170

src/livecodes/i18n/locales/en/language-info.lokalise.json (1)

495-506: MiniZinc localization entries are consistent with generator output

The minizinc.desc, .link, and .name entries align with the TypeScript languageInfo structure and follow the same tag/notes conventions as other languages.

src/sdk/models.ts (1)

1088-1090: Type unions correctly extended for MiniZinc

Language, ParserName, Compiler['scriptType'], and TemplateName now all include the MiniZinc-related literals ('minizinc', 'mzn', 'dzn', 'text/minizinc'), matching how lang-minizinc.ts and minizincStarter reference them. This keeps the public SDK types in sync with the new language.

Also applies to: 1260-1261, 1362-1362, 1457-1457

src/livecodes/languages/minizinc/lang-minizinc.ts (1)

1-19: MiniZinc LanguageSpecs align with parser and compiler infrastructure

The MiniZinc spec cleanly plugs into existing abstractions: parser name matches ParserName/parserPlugins.minizinc, scriptType: 'text/minizinc' is now part of Compiler['scriptType'], and extensions cover both .mzn/.dzn and the canonical name. Identity compilation with a dedicated runtime script is consistent with other interpreted languages here.

src/livecodes/editor/monaco/languages/monaco-lang-minizinc.ts (1)

1-307: Well-structured Monaco language definition for MiniZinc.

The language configuration covers essential editor features correctly:

  • Comments syntax (% for line, %{ }% for block) matches MiniZinc specification
  • Tokenizer properly handles nested block comments via @push/@pop
  • Completions provide helpful snippets with placeholders
src/livecodes/languages/minizinc/lang-minizinc-script.ts (1)

1-101: MiniZinc integration script structure looks good overall.

The script correctly:

  • Uses idempotent initialization with hasRun flag
  • Waits for page load before accessing DOM
  • Provides sensible defaults (10s timeout, gecode solver)
  • Exposes configurable options for users

Comment on lines +100 to +101
// Brackets and punctuation
[/[[]\{\}\(\)\.,|]/, 'delimiter'],
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Malformed regex for bracket/punctuation matching.

The character class /[[]\{\}\(\)\.,|]/ is incorrect. The [[] creates a character class containing only [, then ] prematurely closes the class. This will cause incorrect tokenization.

-        [/[[]\{\}\(\)\.,|]/, 'delimiter'],
+        [/[\[\]\{\}\(\)\.,|]/, 'delimiter'],
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Brackets and punctuation
[/[[]\{\}\(\)\.,|]/, 'delimiter'],
// Brackets and punctuation
[/[\[\]\{\}\(\)\.,|]/, 'delimiter'],
🤖 Prompt for AI Agents
In src/livecodes/editor/monaco/languages/monaco-lang-prolog.ts around lines 100
to 101, the regex /[[]\{\}\(\)\.,|]/ is malformed because the character class is
closed prematurely; replace it with a proper character-class that includes all
bracket and punctuation characters (for example /[{}\[\]\(\)\.,|]/) so the
tokenizer correctly matches [, ], {, }, (, ), ., , and |; update the single line
to use this corrected regex literal.

@sharno
Copy link

sharno commented Dec 18, 2025

ايه الحلاوة دي 😆👏😍

@hatemhosny
Copy link
Collaborator Author

ايه الحلاوة دي 😆👏😍

لغة لطيفة جدا
اتفاجئت بها الصراحة
دايما بنتعلم منك
شكرا شكرا

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
src/livecodes/templates/starter/minizinc-starter.ts (1)

88-105: CSS nesting syntax issue already flagged.

The use of Sass-style nested selectors (&:hover, &:disabled) in a plain CSS block has already been identified in previous reviews and needs to be addressed.

🧹 Nitpick comments (1)
src/livecodes/editor/monaco/languages/monaco-lang-minizinc.ts (1)

360-371: Consider using CompletionItemKind enum for better readability.

The magic numbers (17, 18, 27, 4) work correctly but using the enum names would improve code clarity.

🔎 View suggested refactor
+import type { languages } from 'monaco-editor';
+
 const suggestions = [
-  ...keywords.map((k) => createItem(k, 17 /* Keyword */, k)),
-  ...builtins.map((b) => createItem(b, 18 /* Function */, b, 'Built-in Function')),
+  ...keywords.map((k) => createItem(k, languages.CompletionItemKind.Keyword, k)),
+  ...builtins.map((b) => createItem(b, languages.CompletionItemKind.Function, b, 'Built-in Function')),
   ...snippets.map((s) => ({
     label: s.label,
-    kind: 27 /* Snippet */,
+    kind: languages.CompletionItemKind.Snippet,
     insertText: s.insertText,
-    insertTextRules: 4 /* InsertAsSnippet */,
+    insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet,
     documentation: s.detail,
     range,
   })),
 ];
📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a38b42c and 2f7cd1c.

📒 Files selected for processing (4)
  • src/livecodes/editor/monaco/languages/monaco-lang-minizinc.ts (1 hunks)
  • src/livecodes/languages/prettier.ts (2 hunks)
  • src/livecodes/templates/starter/minizinc-starter.ts (1 hunks)
  • src/livecodes/vendors.ts (4 hunks)
🧰 Additional context used
🧬 Code graph analysis (3)
src/livecodes/languages/prettier.ts (1)
src/livecodes/vendors.ts (1)
  • prettierMinizincUrl (347-349)
src/livecodes/editor/monaco/languages/monaco-lang-minizinc.ts (1)
src/livecodes/languages/languages.ts (1)
  • languages (83-172)
src/livecodes/templates/starter/minizinc-starter.ts (1)
src/sdk/models.ts (1)
  • Template (1379-1386)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (12)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Redirect rules - livecodes
  • GitHub Check: Header rules - livecodes
  • GitHub Check: Pages changed - livecodes
  • GitHub Check: tests (24.x, 4)
  • GitHub Check: tests (24.x, 5)
  • GitHub Check: tests (24.x, 2)
  • GitHub Check: tests (24.x, 1)
  • GitHub Check: tests (24.x, 3)
  • GitHub Check: build
  • GitHub Check: build (24.x)
  • GitHub Check: build (24.x)
🔇 Additional comments (6)
src/livecodes/languages/prettier.ts (1)

1-1: LGTM!

The MiniZinc parser plugin integration follows the established pattern for other Prettier plugins and is implemented correctly.

Also applies to: 12-12

src/livecodes/templates/starter/minizinc-starter.ts (2)

3-7: LGTM!

The template metadata and configuration follow the established pattern for starter templates.


125-169: LGTM!

The MiniZinc example code is well-structured and demonstrates key language features effectively. The source attribution to the official tutorial is a nice touch.

src/livecodes/editor/monaco/languages/monaco-lang-minizinc.ts (2)

5-35: LGTM!

The language configuration correctly defines MiniZinc's syntax rules for comments, brackets, and folding regions.


37-281: LGTM!

The tokenizer comprehensively handles MiniZinc syntax including string interpolation, nested comments, and Unicode operators. The implementation follows Monaco's Monarch tokenizer patterns correctly.

src/livecodes/vendors.ts (1)

301-302: Minizinc package version is current; verify prettier-plugin-minizinc availability.

The minizinc package version 4.4.4 is the latest version, so that reference is correct. However, the @live-codes/prettier-plugin-minizinc@0.2.0 package could not be verified in the public npm registry. Confirm this package exists and is accessible in your build environment, or verify the correct package name and version if it's a private or internal package.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
src/livecodes/utils/utils.ts (1)

689-689: Timing behavior differs significantly between code paths.

When readyState is 'interactive', the function executes immediately (DOM ready, but external resources may still be loading). When neither 'complete' nor 'interactive', it waits for the 'load' event (all resources loaded). This creates inconsistent timing that could lead to race conditions depending on when onLoad is called.

Consider using 'DOMContentLoaded' if only DOM-ready semantics are needed, or document the timing expectations clearly.

🔎 Alternative implementation using DOMContentLoaded
 export const onLoad = /* @__PURE__ */ (fn: (...args: any[]) => any) => {
-  if (document.readyState === 'complete' || document.readyState === 'interactive') {
+  if (document.readyState !== 'loading') {
     fn();
   } else {
-    window.addEventListener('load', fn);
+    document.addEventListener('DOMContentLoaded', fn, { once: true });
   }
 };

This ensures consistent DOM-ready semantics without waiting for all resources.

src/livecodes/languages/minizinc/lang-minizinc-script.ts (2)

40-40: Remove dead code: type guard is unreachable.

The parameter data is typed as MiniZincData = {}, so typeof data === 'string' can never be true. This check is dead code.

🔎 Proposed fix
   hasRun = true;
-  if (typeof data === 'string') data = {};
   const { dzn = '', json = '', config = {} } = data;

65-65: Consider API consistency: solve vs run return types.

The solve method returns the raw result from model.solve() (appears to be an event emitter based on lines 71-76), while the async run method wraps it in a Promise with event handling. This creates an inconsistent API surface.

Consider whether solve should also return a Promise for consistency, or document the difference clearly.

📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 03dbe02 and a244abe.

📒 Files selected for processing (2)
  • src/livecodes/languages/minizinc/lang-minizinc-script.ts
  • src/livecodes/utils/utils.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Redirect rules - livecodes
  • GitHub Check: Header rules - livecodes
  • GitHub Check: Pages changed - livecodes
  • GitHub Check: tests (24.x, 3)
  • GitHub Check: tests (24.x, 5)
  • GitHub Check: tests (24.x, 1)
  • GitHub Check: tests (24.x, 4)
  • GitHub Check: tests (24.x, 2)
  • GitHub Check: build (24.x)
  • GitHub Check: build
  • GitHub Check: build (24.x)
  • GitHub Check: Cloudflare Pages
🔇 Additional comments (6)
src/livecodes/languages/minizinc/lang-minizinc-script.ts (6)

33-33: Module import starts eagerly at script evaluation time.

The dynamic import begins immediately when the script is evaluated, not lazily on first use. This ensures faster initialization but loads the MiniZinc runtime even if livecodes.minizinc methods are never called.

This appears intentional given the auto-run pattern (lines 126-132), but be aware of the upfront loading cost.


35-57: Good implementation of model assembly and solving.

The function correctly:

  • Guards against uninitialized state
  • Gathers MiniZinc code from all script tags
  • Builds the model with optional data files
  • Applies sensible defaults (gecode solver, 10s timeout) while allowing config overrides

60-64: LGTM: Clean initialization with proper guards.

The init method correctly prevents double initialization and ensures both page load and module import complete before proceeding.


66-119: LGTM: Comprehensive error handling and safe property access.

The async run method properly:

  • Ensures initialization before execution
  • Handles errors via event listeners
  • Manages non-zero exit codes
  • Uses optional chaining to safely extract solution output (addresses past review comment)
  • Logs results and resolves with the raw result object

120-123: LGTM: Direct module access without page load dependency.

Unlike init, this method doesn't wait for pageLoaded, only for the module import. This appears intentional since querying solvers doesn't require DOM access.


126-132: LGTM: Smart auto-execution with duplicate prevention.

The auto-initialization pattern correctly waits for page load, initializes the runtime, and only executes if the user hasn't manually triggered run or solve. The hasRun flag provides clean coordination.

Comment on lines 688 to 694
export const onLoad = /* @__PURE__ */ (fn: (...args: any[]) => any) => {
if (document.readyState === 'complete' || document.readyState === 'interactive') {
fn();
} else {
window.addEventListener('load', fn);
}
};
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Add event listener cleanup to prevent memory leaks.

If onLoad is invoked multiple times before the page finishes loading, each call registers a new 'load' event listener that is never removed. This can lead to memory leaks and redundant executions.

Consider either:

  1. Using { once: true } option to auto-remove the listener after first execution
  2. Storing and checking a flag to prevent multiple registrations
🔎 Proposed fix using the `once` option
 export const onLoad = /* @__PURE__ */ (fn: (...args: any[]) => any) => {
   if (document.readyState === 'complete' || document.readyState === 'interactive') {
     fn();
   } else {
-    window.addEventListener('load', fn);
+    window.addEventListener('load', fn, { once: true });
   }
 };
🤖 Prompt for AI Agents
In src/livecodes/utils/utils.ts around lines 688 to 694, onLoad currently adds a
'load' listener for every call which can leak if invoked multiple times before
load; update the implementation to either pass the { once: true } option to
window.addEventListener('load', fn, { once: true }) so the listener auto-removes
after firing, or add a simple module-level boolean (e.g., let loadRegistered =
false) to guard registration and set it true when you add the listener so
subsequent calls skip adding another listener; keep the immediate-ready-state
branch unchanged.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
docs/docs/languages/minizinc.mdx (1)

129-130: Consider consistent spelling variant.

The text mixes "visualizations" (line 129) and "visualisations" (line 130). While both are correct (American vs. British English), using a consistent variant improves readability.

Suggested fix
-However, using the [helper methods](#usage-from-javascript), and based on [official implementations for visualisations](https://github.com/MiniZinc/libminizinc/tree/master/share/minizinc/std/ide), it should be possible to support them.
+However, using the [helper methods](#usage-from-javascript), and based on [official implementations for visualizations](https://github.com/MiniZinc/libminizinc/tree/master/share/minizinc/std/ide), it should be possible to support them.
src/livecodes/languages/minizinc/lang-minizinc-script.ts (2)

48-48: Clarify or remove the string type guard.

Line 48 checks if (typeof data === 'string') and converts it to {}, but the TypeScript signature specifies data: MiniZincData = {}, which is an object type. This guard may be unnecessary defensive programming or could indicate a type mismatch elsewhere.

If this check is not needed, consider removing it for clarity:

-  if (typeof data === 'string') data = {};

133-136: Minor: Variable shadowing in getSolvers().

Line 134 declares const MiniZinc which shadows the module-level MiniZinc variable. While this works correctly, it may cause confusion.

Consider removing the redundant assignment:

   getSolvers: async () => {
-    const MiniZinc = await modPromise;
-    return MiniZinc.solvers();
+    return (await modPromise).solvers();
   },
📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a244abe and b1eab5a.

📒 Files selected for processing (5)
  • docs/docs/languages/minizinc.mdx
  • docs/docusaurus.config.ts
  • src/livecodes/languages/minizinc/lang-minizinc-script.ts
  • src/livecodes/templates/starter/minizinc-starter.ts
  • src/livecodes/utils/utils.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/livecodes/utils/utils.ts
🧰 Additional context used
🧬 Code graph analysis (2)
src/livecodes/templates/starter/minizinc-starter.ts (1)
src/sdk/models.ts (1)
  • Template (1379-1386)
src/livecodes/languages/minizinc/lang-minizinc-script.ts (3)
src/livecodes/main.ts (1)
  • livecodes (36-252)
src/livecodes/utils/utils.ts (1)
  • onLoad (688-694)
src/livecodes/vendors.ts (1)
  • minizincUrl (301-301)
🪛 LanguageTool
docs/docs/languages/minizinc.mdx

[uncategorized] ~130-~130: Do not mix variants of the same word (‘visualisation’ and ‘visualization’) within a single text.
Context: ... based on [official implementations for visualisations](https://github.com/MiniZinc/libminizin...

(EN_WORD_COHERENCY)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Redirect rules - livecodes
  • GitHub Check: Header rules - livecodes
  • GitHub Check: Pages changed - livecodes
  • GitHub Check: tests (24.x, 1)
  • GitHub Check: tests (24.x, 4)
  • GitHub Check: tests (24.x, 3)
  • GitHub Check: tests (24.x, 2)
  • GitHub Check: tests (24.x, 5)
  • GitHub Check: build
  • GitHub Check: build (24.x)
  • GitHub Check: build (24.x)
  • GitHub Check: Cloudflare Pages
🔇 Additional comments (10)
src/livecodes/templates/starter/minizinc-starter.ts (4)

3-7: LGTM!

Template metadata is correctly structured and follows the expected Template type definition.


29-81: Well-structured JavaScript integration.

The inline JavaScript correctly uses the livecodes.minizinc API and handles both success and error cases. The optional chaining on result.solution?.output provides safe access to nested properties.


110-129: CSS selectors correctly flattened.

The button styles now use standard CSS selectors (#button:hover, #button:disabled) instead of nested Sass-style syntax. This ensures the hover and disabled states will work correctly.


157-201: LGTM!

The MiniZinc example code is well-documented, sourced from the official tutorial, and demonstrates constraint modeling effectively. Using String.raw prevents escape sequence issues.

docs/docs/languages/minizinc.mdx (1)

69-94: LGTM!

The API documentation accurately describes the livecodes.minizinc interface and matches the implementation in src/livecodes/languages/minizinc/lang-minizinc-script.ts. The distinction between solve() (requires manual init()) and run() (auto-initializes) is clearly documented.

src/livecodes/languages/minizinc/lang-minizinc-script.ts (4)

1-3: LGTM!

The dynamic import at module level (line 33) enables preloading the MiniZinc runtime while the page loads, which optimizes initialization time.

Also applies to: 33-33


35-41: LGTM!

The getOutput helper safely traverses the solution output hierarchy using optional chaining and provides a sensible fallback.


67-132: LGTM!

The livecodes.minizinc API implementation correctly handles initialization, event-driven solving, and error cases. The run() method properly wraps the solve progress object and handles errors, solutions, and exit events. The safe access to result.solution via getOutput() addresses previous review concerns.


139-145: LGTM!

The auto-run behavior on page load is well-designed: it only executes if the user hasn't manually invoked run() or solve(), preventing duplicate execution via the hasRun flag.

docs/docusaurus.config.ts (1)

293-293: skipErrorChecking: true is a pre-existing configuration, not related to the MiniZinc additions.

This setting was already present in the docusaurus.config.ts file before the MiniZinc language additions. The MiniZinc changes are minimal string literal additions to existing union types in src/sdk/models.ts, which do not introduce type errors and do not require TypeDoc error checking to be disabled.

Likely an incorrect or invalid review comment.

@hatemhosny
Copy link
Collaborator Author

@sharno

I think this is ready to merge.
I have summarized usage in the docs: https://minizinc.livecodes.pages.dev/docs/languages/minizinc
I would appreciate if you can have a look when you have time.
Thank you!

@sonarqubecloud
Copy link

sonarqubecloud bot commented Jan 3, 2026

Quality Gate Failed Quality Gate failed

Failed conditions
4.6% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@hatemhosny hatemhosny merged commit 722bba3 into develop Jan 4, 2026
18 of 19 checks passed
@livecodes-ci
Copy link
Contributor

livecodes-ci bot commented Jan 4, 2026

i18n Actions

Source PR has been merged into the default branch.

Maintainers can comment .i18n-update-push to trigger the i18n update workflow and push the changes to Lokalise.

@hatemhosny hatemhosny deleted the minizinc branch January 4, 2026 00:24
@hatemhosny
Copy link
Collaborator Author

.i18n-update-push

@livecodes-ci
Copy link
Contributor

livecodes-ci bot commented Jan 4, 2026

i18n Actions: .i18n-update-push

Localization updated and pushed to Lokalise.

Name Description
New Branch for i18n i18n/live-codes/minizinc
Last Commit SHA 722bba3

Maintainers can comment .i18n-update-pull after translation is done to trigger the i18n pull workflow and pull the changes back to Github.

@hatemhosny
Copy link
Collaborator Author

.i18n-update-pull

@livecodes-ci
Copy link
Contributor

livecodes-ci bot commented Jan 4, 2026

i18n Actions: .i18n-update-pull

Localization pulled from Lokalise.

Name Description
i18n Branch i18n/live-codes/minizinc
Last Commit SHA 44533fa
i18n PR #933

@livecodes-ci livecodes-ci bot mentioned this pull request Jan 4, 2026
12 tasks
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.

3 participants