The Changelog
v5.2.1 — Bug fixes and improvements to Catnip
This minor update fixes inability to use Script assets with Catnip language and some other issues. Many Catnip blocks were also improved, in wording and markup. Additionally, you can now use the Space key with left mouse button to navigate around rooms.
Changelog
⚡️ General Improvements
- Catnip: Add mutators to timer blocks
- Catnip: Add mutators for “action is down/pressed/released” blocks
- Ct.js now checks whether recovery file actually differs from the regular project file
- Room editor: you can now navigate around with Spacebar + Left mouse button (Closes #526)
- 🌐 Catnip: Improve Russian translations for ct.place
- 🌐 Catnip: Translate Pointer catmod to Russian and add more human-readable English names
- 🌐 Catnip: Translate the Random catmod’s blocks to Russian
🐛 Bug Fixes
- Catnip: Add missing translation keys to Math operators
- Catnip: Fix catnip blocks ignoring translations when there was a translated name without a translated label
- Catnip: Fix inability to compile Script assets with Catnip code
- Catnip: Properly mark the required arguments in the Logic category
- Fields with invalid values should be outlined red
- Fix ct.js saving projects’ scripts with CRLF sequence instead of LF, which caused them to be one-lined in the .ict file, making merging changes harder for Git users. You can fix the existing scripts by cutting and pasting their contents back.
- Fix minor styling issues on the homepage
- Fix
random.dice
trying to convert string values to floats (Closes #544) - Make sure there are no special characters in the project name when creating one (Closes #543)
📝 Docs
- 🐛 Fix brainless translation with room.append in Russian version of the JettyCat tutorial (Closes #141)
Ct.js is a free and open-source game engine supported by you. Consider supporting us on Boosty or contributing to the project directly by adding new features, improvements, and bugfixes to our repository.
v5.2.0 — Object list in room editor and general improvements
This update brings a new context window to the room editor: when you’re in the Select mode, a new toolbar on the right side of the room editor will appear with panels that list all tiles and copies. This is very useful when working with overlapped copies, for searching specific template instances, or when mass-editing specific copies.
App’s settings now include a new menu item to change UI font to ease reading for people with dyslexia. Don’t forget you already can set a custom font for code editors, too!
Additionally, two new methods were added to the u
namespace: distance
and direction
. These work like u.pdn
and u.pdc
, but accept two copies (or other objects) instead of coordinates. So u.pdc(this.x, this.y, exit.x, exit.y)
becomes u.distance(this, exit)
. Handy!
There were also bug fixes and minor improvements, and our contributors added new translations for Catnip and the editor!
✨ New Features
- Add methods
u.distance
,u.direction
(For Catnip, these can be found in Utilities category) - Object list panel for room editor’s select mode, plus hover effect on copies and tiles
⚡️ General Improvements
- Add a menu in the app’s settings to change app’s UI font to Open Dyslexic or Comic Relief
- Catnip: Add “set visibility” block
- Catnip: improve block names for the Place catmod
- Create missing properties and variables when copying Catnip blocks from one asset to another (and in other similar cases)
- Improve how backgrounds and scrolling textures wrap themselves. Closes #535
- Limit the amount of names the confirmation dialog shows when deleting several assets in the asset-browser tag.
- 🌐 Update Chinese Simplified translation (#534 and #536 by @emaoshushu)
- 🌐 Update Brazilian Portuguese translation (made by Henrique aka hlbarone on Discord)
🐛 Bug Fixes
- Catnip: Fix walkOverScript ignoring values in commands’ arguments
- Catnip: Hide templates.killRecursive block as it is an internal API
- Fix an extra copy/tile appearing while using a rectangular fill in room editor
- Fix not being able to copy multiple blocks in catnip
- Fix overflowing content exceeding window boundaries in alertify modals. Closes #537
- Fix repeated import of same-named images (or the same image) leading to textures with identical names, which broke exports
- Fix rooms’ tile editor not accepting 0 as tile layer depth
- Fix sprited counters not rendering in room editor
- Fix tabs with room editor not opening again if this room editor has an event editor open
- Fix values in room editor’s entities properties panel not updating when selecting new copies or tiles
- Fix wrong initial values for rooms’ camera restriction boundaries
🌐 Website
- ⚡ New layout for engine’s features
- 🐛 Fix issues with package icon and rounded corners on main page’s grid layour
- 🔥 Remove old translation keys for the homepage
- ⚡️🌐 Update wording in the homepage’s introductory text for Russian locale
- ⚡️ Display games from static APIs in the homepage
- ⚡️ Improve illustration position on various screens
v5.1.0 — Enumeration asset type, asset searchbar, and QoL improvements
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
- 🐛 Fix not being able to change modifiers of inputs.
v5.0 releases with a visual programming language Catnip!
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 thetween
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
androom.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 tou.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
withresedit
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 waskill
ed. - 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 thesilent: 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
✨ 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
⚡️ 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
✨ 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 nowsounds
,ct.sound.spawn
is nowsounds.play
, 3D sounds are now in much higher quality and are run withsounds.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
. Deprecateu.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 mandatorythis
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
(usePIXI.HTMLText
), ct.ulid (usenanoid
) catmods - 🔥 Remove discord-rpc, at least for now
- 🔥 Remove
google-closure-compiler
(unused package) - 🔥 Remove old unused lines from i18n files
- 🔥 Remove
pointer.permitDefault
andkeyboard.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 👾
✨ 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
- Adds a transparent PIXI.js canvas option (#437 by @markmehere)
- Adds alpha setting for vkeys (#435 by @markmehere)
- Clamp zoom value in the room editor Closes #407
- Exclude blank textures from export and retain shape (#433 by @markmehere)
- Introduces ct.keyboard.permitDefault and ct.pointer.permitDefault (#434 by @markmehere)
- Pug files must use LF
- styleUtils to TypeScript and new IStyle interface (#440 by @markmehere)
- Update Dutch translation (#405 by @GambleBranch)
- Update Japanese translation (#404 by @taxi13245)
- Updated lib.es5.d.ts (#432 by @markmehere)
🐛 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!
✨ 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
andthis.moveBullet
forthis.moveContinuousByAxes
andthis.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