All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
1.15.2 (2023-02-16)
1.15.1 (2023-02-13)
- Added lateral keyword introduced in MySQL 8.0.14 (#5053) (3250956)
- Implement highlight mode for PL/SQL (Oracle) dialect (#5037) (159aa70)
- Improve MySQL highlighting mode (#5050) (00f6089)
1.15.0 (2023-01-25)
- Added highlighting for TIES keyword introduced in PostgreSQL 13 (#5033) (9588086)
- editor shadow appears under the selected line background when horizontal scroll is active (#5020) (ab4f788)
- Remove broken keybinding from vscode mode (#5032) (68ff964)
1.14.0 (2022-12-12)
- Add missing options to
EditorOptions
(#5003) (451b63f) - added GREATEST|LEAST logical functions added in SQL Server 2022 (#5009) (e3f3e7a)
- Better ES6 support for JavaScript Mode (6fb39e3)
- Fix vim keybindings scroll to the selected line (#4980) (8562f94)
- show 2 context characters of a line when moving to it (#4998) (743190e)
- Update ace.d.ts typings for navigate (#5011) (a302709)
1.13.2 (2022-12-07)
- Add missing options to
EditorOptions
(#5003) (451b63f) - Better ES6 support for JavaScript Mode (6fb39e3)
- Fix vim keybindings scroll to the selected line (#4980) (8562f94)
- show 2 context characters of a line when moving to it (#4998) (743190e)
1.13.1 (2022-11-16)
- Change curly braces insertion behavior for Markdown to act the same as for other braces (#4994) (2760234)
- incorrect cursor position for very long lines (#4996) (e57a9d9)
1.13.0 (2022-11-11)
- Add missing options to
VirtualRendererOptions
andEditorOptions
(#4983) (19dd2ec) - Fix of scroll while interrupting animation (#4993) (0092f3f)
- rare case when document passed to
dom.scrollbarWidth
doesn't havedocumentElement
(#4981) (df44158)
1.12.5 (2022-11-01)
- enableLiveAutocompletion documentation (#4976) (987ab76)
- vim "normal" mode brackets highlighting (0fbc54c)
1.12.4 (2022-10-31)
- Open valid url under cursor (#4970) (bf2913a)
- Update for Csound 6.18.0 (#4974) (6886b02)
- update/add missing demo samples (#4975) (2b8236e)
1.12.3 (2022-10-18)
1.12.2 (2022-10-18)
- custom scrollbar breaks csp mode (#4967) (be8eb12)
- find all in range bug (13bd553)
- Namespace-relative names for php (#4963) (96e4066)
1.12.1 (2022-10-17)
- php worker rules for T_NAME_FULLY_QUALIFIED (#4960) (52dbb05)
- recognisition of uppercase hex numbers for stylus mode (#4962) (87e0dc7)
1.12.0 (2022-10-15)
- implement BibTeX mode highlighting (ab9e191)
MockDom's
ClassList
toggle
andcontains
methods returnboolean
instead ofvoid
(e8c0a1f)- change lua version to 5.3 (#4954) (fc56af5)
- documentation for TokenIterator methods (#4955) (6bff7b4)
- Fixed comment folding bugs for html (xml like languages) (#4910) (5279a8a)
- mode change for vim tests (236a31e)
- php worker rules for
T_NAME_FULLY_QUALIFIED
,T_NAME_QUALIFIED
,T_NAME_RELATIVE
namespaced names tokens (#4948) (059ff71) - tools to work with new ace project structure (7894c4b)
1.11.2 (2022-09-26)
- Fixed handling surrogare characters in insert, replace, delete mode in Vim (72fd4b7)
- Fixed handling surrogate characters in insert-after mode in Vim (38f893a)
1.11.1 (2022-09-23)
- Discrepancy between keywords used by mode-aql.js in the current version and the version used by arangodb (1503dd0)
- The editor can be crashed by passing in undefined into the setValue method (56e6e56)
- Update vim mode (#4933) (3b89ed0)
1.11.0 (2022-09-20)
- add gutter indicators for annotations; add custom scrollbar to display gutter indicators (62fb0d8)
- change scroll behaviour for
onmousedown
to immediate scroll to point (392b224) - Do not try apply highlight indent guide if the file is empty (#4928) (a90ef27)
- restrict annotation mark max height and optimise marks coords on canvas (a6e2259)
1.10.1 (2022-09-06)
1.10.0 (2022-08-31)
- editor option for indent guide highlighting (f1f6517)
- add mock
getHighlightIndentGuides
andsetHighlightIndentGuides
for old tests to work (4067512) - added "flex-start" and "flex-end" (#4912) (3e14988)
- Fix problematic semicolon in CSS media queries (#4849) (18a459a)
- more optimal way to accessing an element's list of classes; mark
highlightIndentGuide
as internal property (855a874) - strictly equal instead of loosely (d4c1ab8)
- Updated Jshint to 2.13.5 (#4911) (2401fbd)
1.9.6 (2022-08-17)
- better way to extract css for csp environments (1b0612b)
1.9.5 (2022-08-10)
1.9.4 (2022-08-09)
1.9.3 (2022-08-08)
1.9.2 (2022-08-08)
1.9.1 (2022-08-08)
1.9.0 (2022-08-08)
- added ability to limit amount of undos/redos (#4872) (897ee0a)
- publish Ace source code to ace-code NPM package (#4881) (66cf041)
- Fix determination of anonymous code blocks in Postgres Mode (fixes #4790) (06f7e22)
- Fixed Ace typings (23208f2)
- Fixed jsDoc annotations (e15abb4), closes #4879
- refactor of kotlin mode to simplify states and resolve incorrect highlights (a30a99d)
- returned precise highlight for functions params, generics and types (967aa6b)
- Rust identifiers normally recognised now; generics highlight support; doc comments support (#4868) (bbb5800)
1.8.1 (2022-07-21)
- prevent race condition when creating css files in build (1777bfb)
1.8.0 (2022-07-20)
- add undocumented Target command (62e8e9e), closes #4839
- added NSIS 3.08 commands (acad68c), closes #4838
- bidihandler: check for undefined before access length property on
splits
variable (457b657) - correct highlight of php heredoc strings with one word on line (ae4564c)
- Fixed typo in Nord Dark theme. (#4843) (38bf666)
- Move session.onChange and placeholder.onChange handlers to be first in the change event handler queue (bcb51f2)
- reuse
getTargetDir
function (b89c4db) - type declarations (a8830fc)
1.7.1 (2022-06-29)
- Fixed accessing properties when err is null in onerror handler (3b62a07)
- Uncaught TypeError: Cannot read properties of undefined in worker code (ce068ac)
1.7.0 (2022-06-28)
- Add Robot Framework syntax highlighting (773c0c5), closes #4614
- Added YAML language linter (451f915), closes #3979
- Added two tmthemes gruvbox dark (hard) and light (hard) (6b1e67f), closes #3673
- adds ignore browserified dir to eslintignore (56b591b)
- Allow setAnnotations to use custom className (f505879), closes #4362
- Avoid substitutions when Webpack was introduced (a540323), closes #4476
- Highlighting DISTINCT keyword in SQL (fb3820a), closes #4399
- Make sure completions aren't null or undefined (a78e127), closes #4608
1.6.1 (2022-06-24)
- Highlight unicode characters in Python function and class names (be6f2d1)
- Incorrect YAML syntax highlighting for version numbers with multiple periods (049d761)
- Incorrect YAML syntax highlighting for version numbers with multiple periods #4827 (915fcaf)
1.6.0 (2022-06-10)
- Add class to tooltip DOM element distinguish errors from warnings (#4810) (d2446d6)
- Autocomplete stopped working after upgrade to v1.5.2 (48e6b60)
- Fix css EOF duplicate errors #4816 (48176f6)
- Fix overflow button for long lines with one token (#4818) (3f93451)
1.5.3 (2022-05-31)
1.5.2 (2022-05-30)
- Added es6-shim library to fix old browsers (#4720) (5ba71a0)
- Added mockdom.before method (#4724) (ffedba3)
- Added support for cjs, mjs and log modes (#4718) (375498a)
- Adds missed functions into
php_completions.js
(#4726) (7d5f4b8) - Cannot read property of null for bgTokenizer after session is destroyed (#4713) (d604f52)
- Do not render selected word markers for the same range multiple times (#4727) (cd30f59)
- Fixed popup CSS styling (#4728) (045a3e6)
- Fixed scrolling code lenses into view (#4717) (710b14a)
- Multiple improvements for Ace themes (#4715) (87ad55d)
- Only send postMessage through worker if it's defined (#4722) (2afa4bf)
- Pass additional arguments for command.exec (#4723) (3b36762)
- Removed focussing after timeout in text input (#4716) (f8ea48f)
- Throw invalid delta error if change is out of range and added V2 for worker and worker client (#4721) (f269889)
- Updated ace typings (#4714) (d5d6f9a)
1.5.1 (2022-05-23)
- Correctly tokenize YAML meta tags with non alphabetical characters after multiline string (#4706) (0164811)
- Made commas be tokenized as punctuation operator instead of text in JSON (#4703) (4c4883a)
- Multiple Partiql and Amazon Ion textual notation fixes (#4686) (bffba8d)
- PHP syntax fix for AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG (#4705) (d59c22b)
- Python functions should be highlighted as functions (#4708) (b2aaf1f)
- Updated PHP mode to support PHP8.1 syntax (#4696) (33cf1c6)
1.5.0 (2022-05-12)
- Added ability to configure certain format options for beautify extension (20275de)
- Modify syntax (b78d772)
- Render bidirectional unicode characters as control characters (#4693) (4d2ecf0)
2022.01.26 Version 1.4.14
-
update vim mode
-
remove slow regex in beautify extension
2021.09.30 Version 1.4.13
-
added useStrictCSP global option to use in environments where dynamic style creation is disabled see demo/csp.html for an example of a page which loads external css files instead of generating styles with javascript
-
updated vim mode, added support for gqq command
2020.07.06 Version 1.4.12
-
removed unused es5-shim
-
imporved ruby and vbscript highlighting and folding
-
workaround for double space being converted to dot on mobile keyboards
2020.04.15 Version 1.4.10
-
added workaround for chrome bug causing memory leak after calling editor.destroy
-
added code folding support for vbscript mode
2020.04.01 Version 1.4.9
-
added option to disable autoindent
-
added new language modes
-
fixed backspace not working with some mobile keyboards
2020.01.14 Version 1.4.8
-
highlight both matched braces, and highlight unmatched brace in red
-
improve snippet manager
-
compatibility with webpack file-loader v5
-
improve vim mode
2019.10.17 Version 1.4.7
-
add placeholder option
2019.09.08 Version 1.4.6
-
restore native behavior of ctrl-p on mac (jumptomatching command is moved to cmd-)
-
improve snippet manager
-
fix backspace handling on mobile
2019.06.17 Version 1.4.5
-
improve scrolling and selection on mobile
-
improve type definitions
2019.04.24 Version 1.4.4
-
add experimental command prompt
-
add chrystal, nim and nginx highlight rules
-
fix regression in vim mode on ios
2019.02.21 Version 1.4.3
-
add sublime keybindings
-
add rtl option
-
implement ` and < textobjects in vim mode
2018.11.21 Version 1.4.2
-
fix regression in vim mode
-
improve keyboard input handling on ipad and IE
-
add new syntax highlighters
2018.08.07 Version 1.4.1
-
fix regression in autocomplete
2018.08.06 Version 1.4.0
-
remove usage of innerHTML
-
improved handling of textinput for IME and mobile
-
add support for relative line numbers
-
improve autocompletion popup
2018.03.26 Version 1.3.3
-
fix regession in static-highlight extension
-
use css animation for cursor blinking
2018.03.21 Version 1.3.2
-
add experimental support for using ace-builds with webpack
2018.02.11 Version 1.3.1
-
fixed regression with selectionChange event not firing some times
-
improved handling of non-ascii characters in vim normal mode
2018.01.31 Version 1.3.0
-
added copy copyWithEmptySelection option
-
improved undoManager
-
improved settings_menu plugin
-
improved handling of files with very long lines
-
fixed bug with scrolling editor out of view in transformed elements
2017.10.17 Version 1.2.9
-
added support for bidirectional text, with monospace font (Alex Shensis)
-
added support for emoji 😊
-
new language modes
- Red (Toomas Vooglaid)
- CSound (Nathan Whetsell)
- JSSM (John Haugeland)
-
New Themes
-
Dracula (Austin Schwartz)
2017.07.02 Version 1.2.8
-
-
Fixed small bugs in searchbox and autocompleter
2017.06.18 Version 1.2.7
-
Added Support for arrow keys on external IPad keyboard (Emanuele Tamponi)
-
added match counter to searchbox extension
-
implemented higlighting of multiline strings in yaml mode (Maxim Trushin)
-
improved haml syntax highlighter (Andrés Álvarez)
2016.12.03 Version 1.2.6
-
Fixed IME handling on new Chrome
-
Support for php 7 in the syntax checker
2016.08.16 Version 1.2.5
-
Fixed regression in noconflict mode
2016.07.27 Version 1.2.4
-
Maintenance release with several new modes and small bugfixes
2016.01.17 Version 1.2.3
-
Bugfixes
- fix memory leak in setSession (Tyler Stalder)
- double click not working on linux/mac
-
new language modes
-
reStructuredText (Robin Jarry)
-
NSIS (Jan T. Sott)
2015.10.28 Version 1.2.1
-
-
new language modes
-
Swift
-
JSX
2015.07.11 Version 1.2.0
-
-
New Features
- Indented soft wrap (danyaPostfactum)
- Rounded borders on selections
-
API Changes
- unified delta types
{start, end, action, lines}
(Alden Daniels ajaxorg/ace#1745) - "change" event listeners on session and editor get delta objects directly
- unified delta types
-
new language modes
-
SQLServer (Morgan Yarbrough)
2015.04.03 Version 1.1.9
-
Small Enhancements and Bugfixes
2014.11.08 Version 1.1.8
-
-
API Changes
editor.commands.commandKeyBinding
now contains direct map from keys to commands instead of grouping them by hashid
-
New Features
- Improved autoindent for html and php modes (Adam Jimenez)
- Find All from searchbox (Colton Voege)
-
new language modes
- Elixir, Elm 2014.09.21 Version 1.1.7
-
Bugfixes
-
fix several bugs in autocompletion
-
workaround for inaccurate getBoundingClientRect on chrome 37
2014.08.17 Version 1.1.6
-
-
Bugfixes
- fix regression in double tap to highlight
- Improved Latex Mode (Daniel Felder)
-
API Changes
- editor.destroy destroys editor.session too (call editor.setSession(null) to prevent that)
-
new language modes
- Praat (José Joaquín Atria)
- Eiffel (Victorien Elvinger)
- G-code (Adam Joseph Cook) 2014.07.09 Version 1.1.5
-
Bugfixes
- fix regression in autocomplete popup
-
new language modes
- gitignore (Devon Carew) 2014.07.01 Version 1.1.4
-
New Features
- Highlight matching tags (Adam Jimenez)
- Improved jump to matching command (Adam Jimenez)
-
new language modes
-
AppleScript (Yaogang Lian)
-
Vala
2014.03.08 Version 1.1.3
-
New Features
- Allow syntax checkers to be loaded from CDN (Derk-Jan Hartman)
- Add ColdFusion behavior (Abram Adams)
- add showLineNumbers option
- Add html syntax checker (danyaPostfactum)
-
new language modes
-
Gherkin (Patrick Nevels)
-
Smarty
2013.12.02 Version 1.1.2
-
-
New Features
- Accessibility Theme for Ace (Peter Xiao)
- use snipetManager for expanding emmet snippets
- update jshint to 2.1.4
- improve php syntax checker (jdalegonzalez)
- add option for autoresizing
- add option for autohiding vertical scrollbar
- improvements to highlighting of xml like languages (danyaPostfactum)
- add support for autocompletion and snippets (gjtorikyan danyaPostfactum and others)
- add option to merge similar changes in undo history
- add scrollPastEnd option
- use html5 dragndrop for text dragging (danyaPostfactum)
-
API Changes
- fixed typo in HashHandler commmandManager
-
new language modes
-
Nix (Zef Hemel)
-
Protobuf (Zef Hemel)
-
Soy
-
Handlebars
2013.06.04 Version 1.1.1
-
Improved emacs keybindings (Robert Krahn)
-
Added markClean, isClean methods to UndoManager (Joonsoo Jeon)
-
Do not allow
Toggle comments
command to remove spaces from indentation -
Softer colors for indent guides in dark themes
-
-
new language modes
-
Ada
-
Assembly_x86
-
Cobol
-
D
-
ejs
-
MATLAB
-
MySQL
-
Twig
-
Verilog
2013.05.01, Version 1.1.0
-
-
API Changes
- Default position of the editor container is changed to relative. Add
.ace_editor {position: absolute}
css rule to restore old behavior - Changed default line-height to
normal
to not conflict with bootstrap. Useline-height: inherit
for old behavior. - Changed marker types accepted by session.addMarker. It now accepts "text"|"line"|"fullLine"|"screenLine"
- Internal classnames used by editor were made more consistent
- Introduced
editor.setOption/getOption/setOptions/getOptions
methods - Introduced positionToIndex, indexToPosition methods
- Default position of the editor container is changed to relative. Add
-
New Features
-
Improved emacs mode (chetstone) with Incremental search and Occur modes (Robert Krahn)
-
Improved ime handling
-
Searchbox (Vlad Zinculescu)
-
Added elastic tabstops lite extension (Garen Torikian)
-
Added extension for whitespace manipulation
-
Added extension for enabling spellchecking from contextmenu
-
Added extension for displaying available keyboard shortcuts (Matthew Christopher Kastor-Inare III)
-
Added extension for displaying options panel (Matthew Christopher Kastor-Inare III)
-
Added modelist extension (Matthew Christopher Kastor-Inare III)
-
Improved toggleCommentLines and added ToggleCommentBlock command
-
:;
pairing in CSS mode (danyaPostfactum) -
Added suppoert for Delete and SelectAll from context menu (danyaPostfactum)
-
Make wrapping behavior optional
-
Selective bracket insertion/skipping
-
Added commands for increase/decrease numbers, sort lines (Vlad Zinculescu)
-
Folding for Markdown, Lua, LaTeX
-
Selective bracket insertion/skipping for C-like languages
-
-
Many new languages
- Scheme (Mu Lei)
- Dot (edwardsp)
- FreeMarker (nguillaumin)
- Tiny Mushcode (h3rb)
- Velocity (Ryan Griffith)
- TOML (Garen Torikian)
- LSL (Nemurimasu Neiro, Builders Brewery)
- Curly (Libo Cannici)
- vbScript (Jan Jongboom)
- R (RStudio)
- ABAP
- Lucene (Graham Scott)
- Haml (Garen Torikian)
- Objective-C (Garen Torikian)
- Makefile (Garen Torikian)
- TypeScript (Garen Torikian)
- Lisp (Garen Torikian)
- Stylus (Garen Torikian)
- Dart (Garen Torikian)
-
Live syntax checks
- PHP (danyaPostfactum)
- Lua
-
New Themes
- Chaos
- Terminal 2012.09.17, Version 1.0.0
-
New Features
- Multiple cursors and selections (https://c9.io/site/blog/2012/08/be-an-armenian-warrior-with-block-selection-on-steroids/)
- Fold buttons displayed in the gutter
- Indent Guides
- Completely reworked vim mode (Sergi Mansilla)
- Improved emacs keybindings
- Autoclosing of html tags (danyaPostfactum)
-
20 New language modes
- Coldfusion (Russ)
- Diff
- GLSL (Ed Mackey)
- Go (Davide Saurino)
- Haxe (Jason O'Neil)
- Jade (Garen Torikian)
- jsx (Syu Kato)
- LaTeX (James Allen)
- Less (John Roepke)
- Liquid (Bernie Telles)
- Lua (Lee Gao)
- LuaPage (Choonster)
- Markdown (Chris Spencer)
- PostgreSQL (John DeSoi)
- Powershell (John Kane)
- Sh (Richo Healey)
- SQL (Jonathan Camile)
- Tcl (Cristoph Hochreiner)
- XQuery (William Candillion)
- Yaml (Meg Sharkey)
- Live syntax checks
- for XQuery and JSON
-
New Themes
- Ambiance (Irakli Gozalishvili)
- Dreamweaver (Adam Jimenez)
- Github (bootstraponline)
- Tommorrow themes (https://github.com/chriskempson/tomorrow-theme)
- XCode
-
Many Small Enhancements and Bugfixes
2011.08.02, Version 0.2.0
-
Split view (Julian Viereck)
- split editor area horizontally or vertivally to show two files at the same time
-
Code Folding (Julian Viereck)
- Unstructured code folding
- Will be the basis for language aware folding
-
Mode behaviours (Chris Spencer)
- Adds mode specific hooks which allow transformations of entered text
- Autoclosing of braces, paranthesis and quotation marks in C style modes
- Autoclosing of angular brackets in XML style modes
-
New language modes
- Clojure (Carin Meier)
- C# (Rob Conery)
- Groovy (Ben Tilford)
- Scala (Ben Tilford)
- JSON
- OCaml (Sergi Mansilla)
- Perl (Panagiotis Astithas)
- SCSS/SASS (Andreas Madsen)
- SVG
- Textile (Kelley van Evert)
- SCAD (Jacob Hansson)
-
Live syntax checks
- Lint for CSS using CSS Lint http://csslint.net/
- CoffeeScript
-
New Themes
- Crimson Editor (iebuggy)
- Merbivore (Michael Schwartz)
- Merbivore soft (Michael Schwartz)
- Solarized dark/light http://ethanschoonover.com/solarized (David Alan Hjelle)
- Vibrant Ink (Michael Schwartz)
-
Small Features/Enhancements
- Lots of render performance optimizations (Harutyun Amirjanyan)
- Improved Ruby highlighting (Chris Wanstrath, Trent Ogren)
- Improved PHP highlighting (Thomas Hruska)
- Improved CSS highlighting (Sean Kellogg)
- Clicks which cause the editor to be focused don't reset the selection
- Make padding text layer specific so that print margin and active line highlight are not affected (Irakli Gozalishvili)
- Added setFontSize method
- Improved vi keybindings (Trent Ogren)
- When unfocused make cursor transparent instead of removing it (Harutyun Amirjanyan)
- Support for matching groups in tokenizer with arrays of tokens (Chris Spencer)
-
Bug fixes
-
Add support for the new OSX scroll bars
-
Properly highlight JavaScript regexp literals
-
Proper handling of unicode characters in JavaScript identifiers
-
Fix remove lines command on last line (Harutyun Amirjanyan)
-
Fix scroll wheel sluggishness in Safari
-
Make keyboard infrastructure route keys like []^$ the right way (Julian Viereck)
2011.02.14, Version 0.1.6
-
-
Floating Anchors
- An Anchor is a floating pointer in the document.
- Whenever text is inserted or deleted before the cursor, the position of the cursor is updated
- Usesd for the cursor and selection
- Basis for bookmarks, multiple cursors and snippets in the future
-
Extensive support for Cocoa style keybindings on the Mac https://github.com/ajaxorg/ace/issues/closed#issue/116/comment/767803
-
New commands:
- center selection in viewport
- remove to end/start of line
- split line
- transpose letters
-
Refator markers
- Custom code can be used to render markers
- Markers can be in front or behind the text
- Markers are now stored in the session (was in the renderer)
-
Lots of IE8 fixes including copy, cut and selections
-
Unit tests can also be run in the browser https://github.com/ajaxorg/ace/blob/master/lib/ace/test/tests.html
-
Soft wrap can adapt to the width of the editor (Mike Ratcliffe, Joe Cheng)
-
Add minimal node server server.js to run the Ace demo in Chrome
-
The top level editor.html demo has been renamed to index.html
-
Bug fixes
-
Fixed gotoLine to consider wrapped lines when calculating where to scroll to (James Allen)
-
Fixed isues when the editor was scrolled in the web page (Eric Allam)
-
Highlighting of Python string literals
-
Syntax rule for PHP comments
2011.02.08, Version 0.1.5
-
-
Add Coffeescript Mode (Satoshi Murakami)
-
Fix word wrap bug (Julian Viereck)
-
Fix packaged version of the Eclipse mode
-
Loading of workers is more robust
-
Fix "click selection"
-
Allow tokizing empty lines (Daniel Krech)
-
Make PageUp/Down behavior more consistent with native OS (Joe Cheng)
2011.02.04, Version 0.1.4
-
Add C/C++ mode contributed by Gastón Kleiman
-
Fix exception in key input
2011.02.04, Version 0.1.3
-
Let the packaged version play nice with requireJS
-
Add Ruby mode contributed by Shlomo Zalman Heigh
-
Add Java mode contributed by Tom Tasche
-
Fix annotation bug
-
Changing a document added a new empty line at the end