The Changelog

v5.1.0 — Enumeration asset type, asset searchbar, and QoL improvements

July 20, 2024

This release adds a new Enumeration asset type — an asset and a data type that contains a set of named constants: for example, in an RPG, an item can fit either into hand, foot, head or body slot, and in code you can differ them by using enumerations. It can be used to create nice menus in content editors and behavior fields — which is great for designers and just for managing your game’s data. They also compile to TypeScript enumerations, are supported in all three ct.js’ languages, and are quite performant! More info here.

Another improvement to content and behavior fields is that you can now set a field’s data type to a map — meaning that you can define a dictionary that maps one type to another, like resource names to numbers to define the cost of a building in a strategy game.

Another addition is a global asset search — hit the 🔍 icon in the top-right corner of ct.js window or press Ctrl+P to open a quick asset search you can use with just your keyboard. Catnip in-placesearch now supports arrow keys for navigation, too.

Room editor got some love and now has an additional hotkey for placing tiles: holding Ctrl+Shift and dragging mouse will create a rectangular fill of copies or tiles. While placing items in this way, or in a straight line, a counter of these items will also appear. Good when you need that perfect precision in map designs!

Contributors

  • @godmar
  • @Sarpmanon
  • @taxi13245

You can find other improvements in the changelog below ⬇️

Changelog

✨ New Features

  • Enumeration asset type to create lists of predefined values for content types, behaviors, and to be used directly in code
  • Global asset search accessible with the 🔍 icon in the top-right and the Ctrl+P hotkey
  • Map data type in content types and behaviors’ fields
  • New random.enumValue method
  • Paste textures with Ctrl+V while on the Assets tab
  • Pixel-perfect mode for Scrolling Texture base class
  • Place filled rectangles of copies or tiles with Shift+Ctrl modifier in a room editor
  • Room editor: show a counter when placing copies or tiles in a straight line (with a Shift key)

⚡️ General Improvements

  • Allow closing most success/error/warning messages in the bottom-right corner with a click
  • Catnip: Add xprev, yprev blocks to the Movement category
  • Disable Vulkan support by default due to frequent issues with it on Linux
  • Ignore actions on not-yet loaded sounds; improve migration from v3 to v5 (#532 by @godmar)
    • sound actions on sounds that haven’t been loaded are now ignored
    • sound.playing returns false for sounds not yet loaded instead of crashing
    • strip ct from ct.tween during migration
    • delete deprecated mouse catmod on 4.0.1 migration to prevent crash
  • Internal: Improve how ct.js exposes base classes and Room to code editors
  • Navigate through catnip in-place block search with arrow keys
  • Remember last used tileset in an edited room
  • Tweak styles of menus a bit so they don’t change the height of a menu item when hovered
  • Use fixed port number for in-editor docs and debugger so that localStorage doesn’t vanish on ct.js restart. Also fixes memory leak with lingering web servers after closing a project.
  • Use UI theme colors in room editor’s tile picker
  • Widen the asset confirmation dialog a bit
  • 🌐 Update debug and comments translation files
  • 🌐 Update Russian translation files
  • 🌐 Update Turkish translation file (by @Sarpmanon)

🐛 Bug Fixes

  • 🍱 Fix sound recorder by replacing microm package with @tscole/mic-recorder-to-mp3
  • Add missing translation keys for actions
  • Fetch patrons list on devSetup so there’re no cache errors while developing locally
  • Fix backgrounds blocking click events on copies and tiles
  • Fix ct.transition causing an infinite recursion of room removal in its transitions
  • Fix Ctrl+G hotkey in the room editor
  • Fix mutators making broken blocks if a new blocks piece was introduced in a target block. Fixes errors with If-Else blocks that were mutated from If blocks
  • Fix nested copies not being removed from appended/prepended rooms when a user calls rooms.remove on them.
  • Fix not being able to port v3 versions to v5 (fixes incorrect sound conversion)
  • Fix UI rooms positioned in reverse coordinate system when using this.x, this.y instead of this.position.x, this.position.y
  • Importing a texture from a Buffer must prompt a user for a texture name

🌐 Website

  • 🍱 Resolve some npm audit warnings
  • 🐛 Fix misaligned icons in the navbar
  • ⚡️ Add a Github link to the navbar
  • ⚡️ Add a warning about shitty antiviruses and put a GH issue link for users to report about these cases
  • ⚡️ Automate the changelog page by fetching the release notes from Github
  • ⚡️ Support github issues and users mentions in markdown (for the changelog page)
  • ⚡️ Update Japanese translation (by @taxi13245)
    • Clarified ambiguous expressions.
    • Added translations.

v5.0.1 — hotfix for input's modifiers in the Actions settings

June 15, 2024
  • 🐛 Fix not being able to change modifiers of inputs.

v5.0 releases with a visual programming language Catnip!

June 15, 2024

Ct.js v5.0.0 is out! 🎉

Visual programming language Catnip! Plus better bitmap font support, Typeface asset type, and more!

The main feature of ct.js v5 is Catnip — a block-based visual scripting language, made specifically for ct.js. It functions similarly to Google Blockly or Scratch, but better, and can do everything other languages can do! Documentation received a new section called Learn Catnip, and tutorials have Catnip code blocks alongside JS and CoffeeScript ones, too.

Besides that, we updated the way ct.js handles fonts — Font assets turned into Typefaces, and Typefaces can house several font files for different weights and styles in one asset for easier programmatic use. Issues with bitmap fonts rendering was fixed, and buttons and textboxes can now use bitmap fonts instead of canvas-based labels, which provides pixel-perfect rendering for pixelart projects. For individual labels, a new base class was introduced.

Ct.js v4 projects can be safely migrated to v5 — but make sure to update your text styles according to our migration guide: https://docs.ctjs.rocks/troubleshooting/migration-4to5.html

Changelog

✨ New Features

  • Add a custom error display in games so players can more easily report failures. Add a toggle to disable error reporting in-game and a field to specify a custom repor link.
  • Add a method tween.value to the tween catmod, and add a Catnip block to animate arbitrary computed values.
  • Add an option to main menu to autoapply asset changes before launching a game
  • Add community’s learning resources and games to the starting screen
  • Allow using bitmap labels in buttons and textboxes, and introduce a new base class for Bitmap Text labels. Add an option to increase bitmap font rendering that fixes issues with bitmap fonts
  • Behaviors: add Behavior added and Behavior removed events
  • Context menu item for styles to create a template with a Text base class from it
  • Customize debugger’s layout: split-screen, multi-windowed, and automatic (based on the screen count)
  • New programming language: Catnip
  • New UI themes:
    • Alma Sakura
    • Golden Eye
    • One Dark Pro
    • Synthwave '84
  • room.makeCopyAligned and room.makeCopyAlignedRef methods to dynamically add copies that align to camera’s boundaries, in the same way you set up them in room editor’s UI tools.
  • Specify additional typedefs for JS properties of behaviors, templates, and rooms. Available for JavaScript projects only.

⚡️ General Improvements

  • 🍱 Update the light catmod for ct.js v5
  • Add 'neutralino' case to u.getEnvironment (Closes #517)
  • Add additional checks for extended fields and fields in asset types. Fixes not being able to use array fields for asset types in content schemas
  • Align table cells to the top
  • Improve layout of project scripts
  • Improve performance of afterDraw injection of matter.js catmod
  • Internal: 'always strict' on ct.IDE’s compiled TS files
  • Internal: Enforce stricter type checks in ct.js client library
  • Internal: Bundle most node_modules and ct.IDE’s scripts into one file. This makes loading ct.IDE faster, as well as reduces the bundle size and install time. It also drops --mixed-context nw.js flag.
  • Internal: Update nw-builder to v4.7.4
  • Limit max project name length
  • Relayout the debugger screen to open the console in another window. Solves issues with JS breakpoints and “stop on exception” button
  • Remember opened assets when a project is saved, and reopen them when a project is loaded
  • Rename “editor” to “engine” in the ct.js’ devtools banner
  • Replace resedit-cli with resedit for ct.IDE: removes dependency for node.js in desktop exporter.
  • Rework ct.js games’ CSS to be less invasive to 3rd-party widgets and such
  • Rework font asset type into typefaces
  • Update patrons screen and move its logic into a module
  • Update QR code generator for game debugger

🐛 Bug Fixes

  • Add a safeguard to tween.add to not update values if the animated object was killed.
  • Add proper handling of missing event declaration. Warn user about events that use missing catmods when exporting a project and in a template editro
  • Fix updateWindowMenu error appearing on non-MacOS devices
  • Fix ancient settings for monaco editor that showed errors on ES5+ features
  • Fix being able to get several context menus by right-clicking other stuff with an already opened menu
  • Fix being able to select game canvas on iOS browsers
  • Fix built-in asset gallery not being accessible on Mac
  • Fix canvases and code editors in tandem, style, room and scriptable editors disappearing after opening a tab -> switching to another one -> resizing window -> going back to the tab with a code editor or a pixi.js canvas.
  • Fix cases when content types’ typedefs were not updated
  • Fix copy alignment being bound to copy-pasted copies in the room editor
  • Fix copy rearrangement effects resetting upon reopening a room.
  • Fix emitter’s rectangular shapes being misaligned
  • Fix error spam about uninicialized position and scale changes in room-entities-properties
  • Fix monaco-editors hotkeys for changing font size
  • Fix old current room name in templates.copy documentation
  • Fix SnapTarget in room editor interfering with clicks on canvas
  • Fix templates.each method. It can also be used with arrow function now, too, as it passes a copy to the first argument of your function.
  • Fix textboxes’ html inputs remaining on screen when a room changes
  • Fix the tween catmods throwing errors despite using the silent: true option or .catch handlers
  • Internal: Fix gulp docs failing on windows with new node.js versions
  • Internal: Fix context-menu tags overwriting their ref attribute with “root”
  • Internal: Fix devSetup.gulpfile.js failing on Node.js v20.13+ and Windows
  • Internal: Rename properties of context-menu tag so it doesn’t pull in global values
  • Make monaco-editor pass Ctrl+S, F5 & Alt+F5 hotkeys to ct.IDE so you can save/launch projects while in a code editor
  • Minor visual fixes for tabs
  • Prevent dragging sound thumbnails in the sound editor

🍱 Demos, Dependencies and Stuff

  • Gallery: Add textures for buttons and panels
  • Add tutorial projects ported to Catnip by @firecakes
  • Add a Catnip example of LabRaid
  • Pull the latest docs
  • Rename examples by tagging them with used language, remove two unsupported examples
  • Update Comments and Debug translation files
  • Update the list of boosters

📝 Docs

  • 🐛 Example code error (Follow a copy of a template called “Character”) Fixes #133
  • 🐛 Grammar fixes on homepage
  • 🐛 Make the patrons list centered
  • Add a patron list to README.md
  • Add Catnip examples to ct.js tutorials
  • Add Learn Catnip category
  • 100% russian documentation translation
  • Move a couple comments in catnip’s declarationExtractor to a proper place

🌐 Website

  • 🐛 Fix the broken “games made with ct.js section”, put a button to submit a game
  • 🐛 Set unique names for forms
  • 🚧 I may have summoned demons
  • 🌐 Add Chinese Simplified translation (#44 by @emaoshushu)
  • 🌐 Add Japanese translation (#45 by @taxi13245)
  • ✨ Add forms for submitting games and learning resources
  • ✨ Create an embeddable widget with supporters
  • ⚡ Add a honeypot for all the fields
  • ⚡ Add patrons panel to homepage
  • ⚡ Update wording on the homepage
  • Add a nice language comparison thingie

👾 Misc

  • 🔥 Internal: Delete now unused app/projects folder from the repo
  • 🔥 Internal: Remove the DragonBones submodule
  • 🌐 Update Russian UI translation file

4.0.2 — Improvements to style editor, bug fixes and some QoL changes

February 25, 2024

✨ New Features

  • Add a menu item to duplicate emitter tandems. Closes #498
  • Export and import emitter tandems from files
  • Now you can change the background color in the style editor

⚡️ General Improvements

  • 🌐 Update Chinese Simplified translations (#500 by @emaoshushu)
  • Behaviors will now have an additional icon in the asset viewer showing the asset type it was created for
  • Do update checks at max once in an hour if it was successfully requested before
  • Emitter editors will now show a (?) image instead of a blank broken image if no texture was set
  • (Internal) Move properties assignment for AnimatedSprite from the Copy mixin into the pixi.js-based class.
  • Now line height in style editors will scale with the font size when you change the latter
  • (Internal) Refactor copy creation off base classes, move CopyAnimatedSprite, CopyText, CopyContainer prototypes into separate pixi.js-based classes.
  • Remember whether the grid was disabled in a specific room
  • Transparent background in style editor. Make the preview occupy the available space in the editor.

🐛 Bug Fixes

  • Fix broken QWERTY and Shift+S hotkeys in room editors
  • Fix buttons skipping their pointer events after being disabled and enabled back
  • Fix discardio not removing old keys from asset object before assigning new ones, which led, for example, to not being able to disable stroke/fill/shadow settings of style assets
  • Fix double caching of tile layers that breaks rooms.merge call. Closes #501
  • Fix fs catmod failing when run in node.js context and trying to work with relative paths
  • Fix hotkeys being ignored if non-english keyboard layout was in use
  • Fix nine slice panes’ tint being reset on click and not saved in the room-editor
  • Fix not being able to deselect items after sorting and moving them
  • Fix not being able to set tint with this.tint or the room editor to buttons.
  • Fix scripts sometimes having blank screen when switching back and forth tabs
  • Remove deleted behaviors from opened template editors, and deleted behaviors and templates links from rooms’ properties panel
  • Sound assets should prompt for a name when created

📝 Docs

🌐 Website

  • ⚡ Update wording on essentials on the homepage

4.0.1 — Bug fixes and other minor improvements

February 18, 2024

⚡️ General Improvements

  • Changed button text from Save to Apply (#495 by @AnukratiMehta)
  • Improve migration script for v4 to handle cases when assets had broken references to groups

🐛 Bug Fixes

  • Fix migration code for v4 throwing an error if a project did not use fittoscreen catmod.
  • Fix pointer.collides method
  • Tabs of deleted assets must automatically close. Closes #491
  • Update copies in room editors if their linked text style has changed. Closes #493

🍱 Demos, Dependencies and Stuff

  • ⚡ JettyCat’s example project should use a text base class for its highscore label in the defeat screen
  • 🐛 Fix fullscreen switcher in Catformer example(#490 by @sk757a)

📝 Docs

  • 💩 Use a vanilla document search
  • Drop ct. prefix in catmod docs (#494 by @ehanahamed)

4.0.0 — Behaviors, base classes, UI tools, new sound engine, asset folders, settings API, update to pixi.js v7, and much, much more

February 10, 2024

✨ New Features

  • Add a flag in main app menu -> Troubleshooting section to disable Vulkan support. This allows SteamDeck users to fix webgl issues with ease.
  • Add a random.text method
  • Add an option to disable caching of a tile layer
  • Add context menu options in a room editor to sort copies and tiles by their X or Y coordinate
  • Add context menu options in a room editor to send copies or tiles to back/to front
  • App Blur and Focus events for rooms
  • Asset confirmation popup when running a game without applying assets
  • Asset folder tree with D&D support.
  • Asset sorting by type.
  • Base classes. A framework for adding new base classes templates are built upon and UIs for users to make templates that behave differently from regular animated sprites. Includes:
    • Ye old Animated Sprite.
    • Repeating texture and Sprited counter base classes.
    • Containers.
    • Nine-patch panels.
    • Buttons.
    • TextBoxes.
  • Bindings for copies’ properties in the room editor
  • Branding options to switch “Made with ct.js” to the regular logo + to replace loading text
  • Ct.js now adds hash sums of exported files’ names to textures, icons, and your game’s source code. It makes it easier to update your games on your own servers and prevents the usage of outdated assets for your players. Note that index.html file should never be cached — the other assets can now be cached.
  • Ct.js will now backup your project’s .ict file versions in addition to making recovery files. Amount of backups can be configured in main project’s settings (old Authoring tab)
  • Drop assets onto breadcrumbs.
  • In the room editor, copies now show their templates’ names when you hover them.
  • Mass operations on assets in the asset browser
  • Multiple asset dragging into folders
  • New Behavior asset type
  • New event “On app exit” for desktop catmod.
  • New previewing engine (#441 by @markmehere). Co-authored by @CosmoMyzrailGorynych to adapt it for ct.js v4
  • New Scripts assets and extended support for asset references in content editors and catmods
  • New sound editor and sound engine (by @Atavismus with @CosmoMyzrailGorynych mentorship). Effects on API: ct.sound is now sounds, ct.sound.spawn is now sounds.play, 3D sounds are now in much higher quality and are run with sounds.playAt method. Effects on UI: it’s dope.
  • Now folders can be dragged around, too! Plus colored folder icons in the sidebar
  • Optionally exportable project structure as res.tree and methods for browsing it.
  • Set a fixed array length in array-editor and extensions-editor
  • Support for TypeScript in custom scripts
  • Typescript definitions for project’s content types
  • UI tools for the room editor

⚡️ General Improvements

  • Emitter editor was updated to support pixi.js v7. Some features were added, removed, or transformed.
  • “Duplicate” context menu options for templates, rooms, behaviors, and styles
  • Add a ‘disabled’ binding to TextBoxes
  • Add a filler for empty “Latest Projects” list
  • Add a pointer polyfill catmod to support pointer catmod in Safari browser
  • Add a prompt for new asset’s name
  • Add label to the notepad panel’s show button
  • Add methods to convert UI and game coordinates to coordinates in DOM space
  • Add the “New Asset” button to asset browser’s filler
  • Add titles for longer settings items in the main app menu
  • Add u.time, u.timeUi. Deprecate u.delta, u.deltaUi.
  • Adds a transparent PIXI.js canvas option (#437 by @markmehere). Upgraded for pixi-v7 by CoMiGo
  • Adds alpha setting for vkeys (#435 by @markmehere)
  • Automatically open devtools in build environment
  • Better compact layout for asset-browser
  • Better handling of project scripts by keeping them as monaco models in memory. Solves errors about duplicate definitions and allows editing scripts by peeking into them from other code editors.
  • Better tabs’ widths on smaller screeens
  • Bundle both PNG and WebP images on production. Let Pixi.js pick the supported format automatically.
  • Capture pointer events in the pointer catmod so the listeners fire before Pixi’s built-in pointer events
  • Clamp zoom value in the room editor
  • Convert textures to PNG on import
  • Copies now have a proper hitarea for pointer events that matches the collision shape
  • Display room events in a modal window. Children were confused and lost their rooms.
  • Drop ct., make all the namespaces global objects
  • Exclude blank textures from export and retain shape (#433 by @markmehere)
  • Improve line height in modal menus (e.g. event selection menu)
  • Improve the visuals of launch confirmation window
  • Make sure every copy has at least a basic collision shape
  • Maximize window on start
  • Minor style improvement for compact asset-browser
  • New room previewer (#439 by @markmehere). Co-authored by @CosmoMyzrailGorynych for pixi v7 upgrade
  • Pug files must use LF (internal)
  • Remove extra padding in behavior lists
  • Rename ct.random catmod into random
  • Rename settings.speed to targetFPS
  • Rename some i18n keys in non-english translation files
  • Rename tween.add option useUiDelta to isUi to be in-line with ct.js API. Change transition catmod to use UI time for transitions
  • Rework project creation form in a separate tab
  • Riot mixins are now ESM modules in node_requires/riotMixins. languageJSON can now only be accessed through node_requires/i18n. (internal)
  • Set icons and metadata for ct.js’ Windows executables and sign them.
  • Simplify the use of wire mixin for riot tags by removing the mandatory this in the beginning of the property path. (internal)
  • Skip texture atlas packing if no changes to textures were made.
  • Start copying sounds earlier in the exporter.
  • Sticky headers for .aNiceTable CSS class. (UI)
  • Support for base class capabilities in the exporter
  • The exporter is definitely typed now (internal)
  • Tighter layout of room editor -> room properties panel
  • Update Dutch translation (#405 by @GambleBranch)
  • Update Japanese translation (#404 by @taxi13245)
  • Update the capture catmod for v4 (#477 by @Atavismus)
  • Update the code for adding styled text labels in style-editor
  • Update the desktop catmod for Neutralino.js
  • Update the link for JDK download, so it shows exactly v17
  • Update the skeletal-animation icon
  • Updated lib.es5.d.ts (internal, #432 by @markmehere)
  • Use a locally installed node.js for setting icons on Windows executables baked from project export for desktop. Propose users to download Node.js if it is not present in the system.
  • Use simpler icons in array-editor, as icons overuse in content editors cause lagging

🐛 Bug Fixes

  • Add the missing Promise typings
  • Allow setting scale value with plain numbers, like this.scale = 5.
  • Asset references should be updated in content types when deleted
  • Fix “Cannot read properties of undefined” when caching tilemaps with funky positions, which led to rounding errors and negative indices.
  • Fix a minor error in tween.add
  • Fix a mostly harmless error in event-list-scriptable
  • Fix an unbreaked case in emitter-editor switch statement
  • Fix android builds. Fix capacitor-cli, it is now used from the bundled package
  • Fix any type in imageUtils.ts (internal)
  • Fix asset-selector, new-asset-prompt, exporter-error closing themselves when a click starts on one element and ends on another, mainly during text selection
  • Fix broken hotkeys in the room editor
  • Fix cached tilesets having terrible, terrible render in pixelart mode
  • Fix copy system info menu, add a line about WebGPU
  • Fix Ctrl + Shift + C hotkey for devtools
  • Fix deleting tiles on a hidden tile layer
  • Fix desktop exports
  • Fix double retinization of drawing canvas that led to absurd canvas dimensions on mobile devices (and squishing of viewport)
  • Fix event list not refreshing after a catmod was enabled/disabled
  • Fix long-press events
  • Fix memory leak with deleted tilemaps hanging in templates.list.TILEMAP
  • Fix memory leak with undeleted backgrounds hanging in main copy stack and templates.list.BACKGROUND
  • Fix missing field in tile layer when pasting in a room editor with no suitable tile layer
  • Fix missing type definitions for random.from
  • Fix nudging copies with arrows in a room editor resetting copies’ positions after selecting anything else
  • Fix random.coord method
  • Fix sounds’, tandems’, and rooms’ IDs not being unwrapped for the content system
  • Fix templates.isCopy throwing errors when passed a constant value
  • Fix textures not being properly removed from linked assets
  • Fix the tiny black gap when a game is fully covering the screen
  • Fix the Translate icon
  • Fix tween catmod’s typedefs
  • Fix typo in translation (Ukranian -> Ukrainian) (#459 by @sk757a)
  • Fix values in room editor tools reset when clicking on a different copy
  • Fixed Android export issue (#444 by @omkarpattanaik)
  • Ignore attempts to export mac builds on Windows
  • In texture context menu -> Create template, create a template without asking for its name; prompt for a name if already occupied
  • No texture must be texture: -1 in exporter’s templates output
  • Projects’ fonts must load into ct.js when opening a project
  • Remove expandViewport view mode (not needed now, use “expand”)
  • Room.merge() must preserve scale, rotation, and alpha properties for copies (#457 by @winterstein)
  • Update Discord invite links (#427 by @cemalgnlts)
  • Update fs catmod to support Neutralino
  • Use collision shape from a texture set in the extensions parameter of templates.copy method

🍱 Demos, Dependencies and Stuff

  • Pull the latest asset packs
  • Pull the latest docs
  • Update examples and templates
  • Update ESlint for typescript. Fix linter issues.
  • Update nw.js to v0.72.0 (last to support windows 7)
  • Update the list of boosters

📝 Docs

  • Fix typo in example code (#108 by @GambleBranch)
  • 🐛 Change a single spelling error in docs/ct.md (#110 by @FlyingPig525)
  • 🐛 Fix a typo created in sound.howler’s docs (#430 by @blueloveTH)
  • 🐛 Fix broken links on the homepage
  • 🐛 ru/README.md fix links (#106 by @progzone122)
  • ✨ Add Giscus commenting service
  • ⚡️ Update Vuepress and its theme
  • 🐛 Fix links in fields-declaration
  • 🐛 Fix links in input-methods
  • 🐛 Fix links in settings-and-extensions
  • 📝 Docs: Fix typo in docs/modding-ctjs/fields-declaration.md
  • 📝 Fix old injects folder name in other languages
  • 📝 Fix wrong injects folder name in events-and-injections.md
  • 📝 Fix wrong/outdated injects folder name in mod-structure.md
  • Update README.md
  • Update the changelog

🌐 Website

  • 🐛 Fix links to Discord server
  • 📝 Update changelog
  • ⚡️ A little refactor
  • ⚡️ Add a line about “broken” files in MacOS to the download page
  • ⚡️ Add a line about CoffeeScript into the presskit
  • ⚡️ Add Dutch translation (#38 by @GambleBranch)
  • ⚡️ Replace AppImage installer with an .sh one (for Linux platform)
  • ⚡️ Update homepage and the changelog
  • 📝 Fix wording for footer license info
  • 📝 Fix wording for macDamangedWarning
  • 📝 Fix wording on homepage

✌️ Misc

  • 🔥 Nuke app tour
  • 🔥 Nuke the old asset viewer
  • 🔥 Remove a non-existent method call
  • 🔥 Remove ancient ct.3d catmod
  • 🔥 Remove broken or deprecated catmods
  • 🔥 Remove ct.eqs, PIXI.MultistyleText (use PIXI.HTMLText), ct.ulid (use nanoid) catmods
  • 🔥 Remove discord-rpc, at least for now
  • 🔥 Remove google-closure-compiler (unused package)
  • 🔥 Remove old unused lines from i18n files
  • 🔥 Remove pointer.permitDefault and keyboard.permitDefault (use settings.preventDefault field)
  • 🔥 Remove remnants of old debugger versions
  • 🔥 Remove settings.width, settings.height, as they are not used anywhere and have no effect
  • 🔥 Remove the deprecated Room.addTileLayer method
  • 🔥 Remove the old debugger-toolbar
  • 🔥 Throw burst-mode of particle system into a dumpster, I’m quacking done
  • 🌐 Update Russian i18n file
  • 🌐 Update Brazilian Portuguese translation, by hlbarone at Discord
  • 🌐 Update Dutch translation (#485 by @GambleBranch)
  • 🌐 Update the debug translation file
  • 🌐 Update Turkish translation, by @Sarpmanon
  • 💩 Add a temporary band-aid for “t.isInteractive is not a function” See https://github.com/pixijs/pixijs/issues/9495 for root issue tracking
  • 💩 Add band-aids for @pixi/particle-emitter See https://github.com/pixijs/particle-emitter/issues/209
  • 🐛 Replace this.depth with this.zIndex (#429 by @Piyush-Deshmukh)
  • 📝 Fix type definitions for ct.backgrounds & gamepad module (#443 by @ehanahamed)
    • Update ct.backgrounds typedef
    • Update ct.backgrounds.list type
    • Added d.ts for gamepad catmod
  • 📝 Update Discord Links
  • 🧹 Annotate TODOs in code with issue numbers, remove obsolete TODOs

3.3.0 — Maintenance build before a major version bump 👾

December 13, 2023

✨ New Features

  • Ct.js now adds hash sums of exported files’ names to textures, icons, and your game’s source code. It makes it easier to update your games on your own servers and prevents the usage of outdated assets for your players. Note that index.html file should never be cached — the other assets can now be cached. Sounds are currently left with the old behavior as I have bigger plans for them and hashing large sound files is probably not the best idea. If you need to cache-invalidate a sound asset (say, by replacing one sound file with another), you can recreate the sound asset under the same name. Partially closes #409
  • In the room editor, copies now show their templates’ names when you hover them.
  • Support for TypeScript in custom scripts
  • Catmods: New Supabase Module (#425 by @ehanahamed)

⚡️ General Improvements

🐛 Bug Fixes

  • Allow setting scale value with plain numbers, like this.scale = 5. Closes #403
  • Allow textures to be set to -1 (#438)
  • Fix “Cannot read properties of undefined” when caching tilemaps with funky posisions, which led to rounding errors and negative indices.
  • Fix copies’ custom properties in the room editor
  • Fix shared asset pickers for sounds and emitter tandems
  • Fix sounds’, tandems’, and rooms’ IDs not being unwrapped for the content system
  • Fixed Android export issue (#444 by @omkarpattanaik)
  • Ignore attempts to export mac builds on Windows
  • Update Discord invite links (#427 by @cemalgnlts)
  • Use collision shape from a texture set in the extensions parameter of ct.templates.copy method

🍱 Demos, Dependencies and Stuff

  • Update docs. Fix links to tutorials on the onboarding screen

📝 Docs

  • 📝Fix typo in example code (#108 by @GambleBranch)
  • 🐛 Bring back the adequate search plugin that doesn’t ignore code in headers
  • 🐛 Change a single spelling error in docs/ct.md (#110 by @FlyingPig525)
  • 🐛 Fix a typo created in sound.howler’s docs (#430 by @blueloveTH)
  • 🐛 Fix broken links on the homepage
  • 🐛 ru/README.md fix links (#106 by @progzone122)
  • ✨ Add Giscus commenting service
  • ⚡️ Fix dependencies’ versions
  • ⚡️ Tweak search settings a bit
  • ⚡️ Update Vuepress and its theme, add search back
  • 🐛 Docs: Fix links in fields-declaration
  • 🐛 Docs: Fix links in input-methods
  • 🐛 Docs: Fix links in settings-and-extensions
  • 📝 Docs: Fix typo in docs/modding-ctjs/fields-declaration.md
  • 📝 Fix old injects folder name in other languages
  • 📝 Fix wrong injects folder name in events-and-injections.md
  • 📝 Fix wrong/outdated injects folder name in mod-structure.md
  • 📝 Add a comment to project-selector

🌐 Website

  • 🐛 Fix links to Discord server
  • ⚡️ A little refactor
  • ⚡️ Add a line about “broken” files in MacOS to the download page
  • ⚡️ Add a line about CoffeeScript into the presskit
  • ⚡️ Replace AppImage installer with an .sh one (for Linux platform)
  • ⚡️ Update homepage and the changelog

🌻 Misc

  • 📝 Fix type definitions for ct.backgrounds & gamepad module (#443 by @ehanahamed)
    • Update ct.backgrounds typedef
    • Update ct.backgrounds.list type
    • Added d.ts for gamepad catmod

v3.2.0 — Support for CoffeeScript, a simple, easy to write language that can do everything JavaScript does!

December 25, 2022

✨ New Features

  • Add a small button to collapse template’s properties panel. Useful for presentations.
  • Add an option to room settings to automatically follow a copy of a given template
  • Catmod for integration with Game Distribution, an ad service (#394 by @UlisesFreitas)
  • Support for CoffeeScript! Choose your preferred language when creating a new project 💪

⚡️ General Improvements

  • 🌐 Update Turkish translation, made by Sarpmanon from our Discord server!
  • Add aliases this.moveSmart and this.moveBullet for this.moveContinuousByAxes and this.moveContinuous correspondingly (these come from the ct.place module)
  • Add documentation links to the content editor’s panels
  • Add hotkey hints to undo/redo buttons in the room editor
  • Do not show table headers for copies’ custom properties when no properties exist
  • Force background on the notepad panel’s “expand” button; useful on dark themes with which it can blend with backgrounds
  • Make addresses in the QR code panel selectable (debugger’s toolbar)
  • Prevent nw.js SDK menu from popping up when ct.js is packaged
  • Relayout code editors when switching tabs. Prevents code editors from disappearing after zooming or switching template coding layouts
  • Rework texture editor’s layout
  • Show theme colors in the app settings -> theme menu
  • Update textbox tutorial for v3 and add the missing step (#396 by @firecakes)
  • Warn users that they need to add a tile layer when they try to add tiles into a room that doesn’t have any layers

🐛 Bug Fixes

  • 🍱 Update 2DPhysics example
  • Don’t attempt to focus items in a context menus if there are no such
  • Fix an ugly splash screen for the DungeonCrawler demo project
  • Fix broken sound recorder
  • Fix scrollbars sometimes appearing in the room editor
  • Fix templates not being properly cleaned up if they are in a currently opened room
  • Fix texture offset being applied to the texture preview window
  • Fix wrong click location on a tile picker
  • Ignore clicks on the “Run” button if a project is already being compiled. Should remove most of the headache with Window’s EPERM issues
  • Initialize timers for rooms
  • Outline currently selected template in the room editor’s template browser
  • Room’s background color input must not have an alpha input
  • Set default values for room’s camera restrictions
  • Update respective asset viewers when they are changed or created. Fixes outdated template list in the room editor when you’ve created or modified a template while a room editor is open.

🍱 Demos, Dependencies and Stuff

  • Update bundled assets
  • Pull the latest gallery assets

📝 Docs

  • 🐛 Multiply horizontal x-change with delta when robot travels on platform (#102 by @godmar)
  • ✨ Translate jsintro_pt1.md to Russian (#100 by @progzone122)
  • ⚡️ Create ru/jsintro_pt2.md and fix ru/readme.md (#101 by @progzone122)

🌐 Website

  • 📝 Update changelog
  • ⚡️ Add a big Discord badge to the downloads page
  • ⚡️ Add a button for ARM builds for mac

3.1.0 — TypeScript support, multiple ct.js windows support, translations, and a bunch of QoL improvements and fixes

November 7, 2022

Changelog

Mon Nov 07 2022

✨ New Features

⚡️ General Improvements

  • Add context menu to the room editor to delete, copy, and paste items
  • Better French translations (#371 by @rtauziac aka Crazyrems)
  • Clean up gulpfile from unneeded packages and remove builds after zipping them
  • Complete patrons tab, add a little shoutout to the starting screen
  • ct.capture: add portion method (by Tho_mas), fix object method
  • Define types for all the keys of IProject
  • Do not minify HTML/CSS if not minifying JavaScript (#364 by @markmehere)
  • Lossless image optimization for ct.js assets (#374 by @FlipFloop)
  • Notepad now accepts free text (#376 by @markmehere)
  • Tabbable copies and improved keyboard support in the room editor (#372 by @markmehere)
  • Tooltip and alt-click for palette color removal (#375 by @markmehere)
  • 🌐 Add Turkish translation by Sarpmanon from our Discord server!
  • 🌐 Update Dutch translation, by GambleBranch
  • 🌐 Update Brazilian Portuguese translation (#384 by @leedigital)
  • 🌐 Update Chinese Simplified translations (#385 by @emaoshushu)
  • 🌐 Better French translation (#393 by @FlipFloop)
  • 🌐 Update Russian translation

🐛 Bug Fixes

  • Add a missing name field to IStyle interface
  • Apply changes in the properties panel when saving a room
  • Delete typings on reset all (#373 by @markmehere)
  • Examples on Mac should be clonable only (can’t save inside the app itself)
  • Fix a dumb typo in project-selector tag
  • Fix a tiny typo at russian description of Frame End event
  • Fix broken Pointer Enter, Pointer Leave events
  • Fix custom property cloning link issue (#388 by @firecakes)
  • Fix issues with timer events in the Catsteroids example
  • Fixed bug of not showing texture and sound gallery when ctjs is run outside of your home directory (#386 by @leedigital)
  • Names of content types should be marked as required
  • Remove Wheel Scroll event — it was never supported by pixi.js v5.3.9. Use Actions and ct.pointer inputs instead.

📝 Docs

  • 🍱 Update vuepress to v2-beta-51
  • 🐛 Fix English headers in informative blocks on Russian locale
  • ⚡ Update several Russian pages

🌐 Website

  • 📝 Update changelog for v3.0.1

🌻 Misc

3.0.1

September 12, 2022

⚡️ General Improvements

  • 🌐 Update French translation (#366 by @rtauziac)
  • 🌐 Update Japanese translation (#367 by @taxi13245)
  • Drop precision on position and scale of objects in the room editor. Reasonably rounds their values to more logical numbers.

🐛 Bug Fixes

  • Add support for template and texture arrays to the Context subsystem
  • Escape single quotes while stringifying certain properties. This allows, among other things, use of ’ in custom properties (room editor) and template names
  • Fix ct.place crashing game if a collision check is made on a disproportionately squished circle
  • Room editor shortcuts must work only if the Rooms tab is active

🍱 Demos, Dependencies and Stuff

  • Update nw.js to v0.67.1

📝 Docs

🌐 Website

  • 🐛 Fix img tag appearing in games’ descriptions on the Made With page
  • 🐛 Remove .DS_Store
  • 📝 Update changelog
  • ⚡ Add a working version of web installer for windows
  • ⚡ Italian documentation translation is now public; add a proper link in the header!
  • ⚡ Temporarily replace web installer for windows with zip archives
  • ⚡ Update italian translation (@omartek)

🤖 Misc

  • 🔥 Remove now useless twoPi var in ct.place
Older releases