This is a detailed list of changes made to LCWO. It's mostly for the
developer's own reference, but it's public so everyone can see what is going
on behind the scenes at LCWO. Some things may not make much sense to anyone but
This log is available as an Atom feed: https://lcwo.net/changelogatom.xml.
Even more fine grained changes can be observed in the git repository:
Started on 2009-02-08.
* Added Czech proverbs to plain text training (tnx OK4MR)
* Remove twitter link from news page
* Allow disbling the contact form
* Fix transmit training audio for Chrome (tnx sipszak)
* word training: fix bug in filling up array with duplicate words
(found and fixed by user Lucifuge)
* word training: generate a warning if parameters result in empty word list
* Added 1000 most common words and a set of poems (Ogura Hyakunin Isshu)
to word training / plain text training for Japanese (tnx Lucifuge)
* Added some additional characters to the custom character selection,
including those used in the Scandinavian countries, Cyrillic and Arabic
* Add Polish proverbs to plain text training (tnx SP2Z)
* Add explicit "Play" button to plain text training, so it's more
accessible for visually impaired users (tnx IZ4APU)
* When uploading a word list, remove \r characters
* On the lessons page, show letters of lessons in dropdown menu (tnx UT4UVE)
* Fix MorseMachine on Chrome + Android (tnx Jylz)
* Downloads: Allow file lengths of up to 10 minutes. Allow setting extra
word space for download files (tnx OK9REJ)
* Replace DJ1YFK with DJ5CW :-)
* Allow downloading/generating up to 50 practice files at once.
(previous limit was 20)
text snippets contain ' characters (e.g. Catalan, tnx ea3ejt)
* CW Settings: Display hint to click save also when activating extra
characters (!, ", ', ...) - tnx WA2NFN
* MorseMachine: make buzzer for jscwlib louder and distorted.
* Small tweak of cookie settings.
* MorseMachine: Only show partial character set in drop down menu to
avoid breaking the site layout (tnx brbrendan)
* MorseMachine: Remember selected character set. For non-Koch character
set, always activate all characters
* Course Lessons: Only calculate Levenshtein error if text has less than
255 characters (limit of PHP's built in function). - tnx oc
* Set session cookie with sameSite = Strict.
* Update jscwlib (remove excessive space at the end of downloaded files)
* Improved validation of user input: Fix MorseMachine count validation.
* Improved validation of user input to avoid SQL injections (tnx Chris, DK2CW)
* MorseMachine: Use content of entry field as keyboard input, *not* the
keycode sent by the keyup event (which apparently is not always correct
with keys that require pressing shift)
* Change default CW speed to 20 wpm (characters) / 15 wpm (effective) to
account for the corrected speed settings.
* Update ebook2cw to latest version (0.8.4) which fixes Farnsworth timing
* Compile ebook2cw CGI with "cgibuffered" option (fixes the downloads for
the Docker version)
* Updated jscwlib to ensure constant volume when frequency changes with |f
command (tnx oc).
* Small improvements to login and password request process:
- Do not forward to start page if the password was incorrect (gives
the user time to read the error message)
- If a password for a non-existing account is requested, tell the
user about it (it used to say there's no email address on record
for this account)
* Generate robots.txt by a script, disallowing all access for the DEV
* Enable start delay for the plain text training (tnx oc)
* Code groups: Properly display missed '-' characters (tnx KC9NXA)
* Allow users to flag personal messages as spam (tnx ksk)
* Added a Danish character set to the Morse Machine
* Updated to latest dev version of jscwlib (fix Æ = .-.- instead if .- .)
* Download practice files: Make sure to include "VVV/AR" in
generated files, even if jscwlib is currently selected (tnx IV3GSO)
* Remove the Flash player; Flash is EOLed by Adobe, no more
updates will be supplied, and we now have perfectly working
* Improve contrast of play button and menu links in dark mode.
* CW settings page: Notify user that they need to click the "Save"
button to save, if settings were changed.
* text2cw: Hide text also from code snipped.
* Added new Dutch proverbs (tnx nonagenarian)
* Allow to hide the text in text2cw mode (useful in conjunction
with loading a text file with a practice text) - tnx DF1DV
* Fix the session keepalive function (tnx lidsville)
* Changelog available as Atom feed (/changelogatom.xml) (tnx oc)
* Improved error checking of groups, according to HST rules.
(contributed by Victor Denisov)
* Add dark mode (suggested by K5RHA)
* TX training: Make key button larger. Same key for mouse and touch
events. ESC clears text. Space bar can be used as an alternative
* Improve colour contrast of checked groups. Also underline errors.
* Word training: When selecting words from multiple languages,
make sure that an equal number of words is selected from each
language (tnx oc).
* QTC: After finishing, pressing enter again will check QTCs and
highlight "new attempt" button, so you can practice without
using the mouse (tnx DF9TS)
* QTC: Remember settings permanently (tnx DF9TS)
* MorseMachine fix multi character entry (e.g. Japanese)
* Add "Blind mode" to Callsign training (suggested by CT1EAT)
* Fix replaying of callsigns in Callsign training (correct speed)
* Fix automatic skip to next word in Word training (jscwlib)
* Remove option to select geographically closest server
(not needed anymore thanks to jscwlib)
* MorseMachine: Practice with custom character set, and
Hiragana/Katakana (jscwlib only)
* jscwlib is now the default CW player for new users
* The site now internally uses the utf8 character encoding.
* Added French proverbs to plain text training (tnx SolarMax)
* Link to MP3 file under player: Results in download, doesn't play
file in browser
* Include experimental sound generation with jscwlib.
* Allow selecting REAL characters for code groups (instead of PARIS)
* Every user can download their results as JSON or CSV files now.
* Allow play/pause control by double-tapping Ctrl on Koch course
* Add usage statistics page (https://lcwo.net/stats)
* MorseMachine allows to show the current character when pressing button.
This allows the user to *know* which letter was sent and to re-hear it
before skipping it (tnx 4Z5SL)
* Transmit training: Add more character (Umlauts, etc.) (tnx SA6CBZ)
* MorseMachine: Add alternative character order (tnx SA6CBZ)
* Fix problems with Umlauts in wordtraining.
* Word-Editor: Allow filtering words by left/right match (tnx DK1ET)
* MorseMachine now supports different character sets / orders (tnx NN7M)
* Enable Extra Word Space also for custom code groups (but not for
normal code groups because we want comparable results for the
* Allow opening a local text file in the text2cw converter (tnx WA2NFN)
* Embeddable CW in forum messages: Allow changing CW parameters.
* Allow embedding morse code snippets into forum posts with [cw]text[/cw]
syntax. Additionally speed, eff(ective speed), ews (extra word space)
and freq can be specified e.g. [cw speed=60 ews=5 freq=500]Hello[/cw].
* Word training: Add auto skip function to move to the next word without
pressing return (5 seconds delay)
* Extra word space: Allow larger spaces (previous limit 5, now 40)
* Add extra word spacing option (currently only active in Koch lessons)
* Remove autocomplete for word and callsign training
* Reduce buzzer volume in Morse Machine
* Allow space instead of dot for replay in callsign and word training.
* Firefox does not allow auto-playing sound any more (without a click
or tap by the user). In word training, callsign training and Morse
Machine, this resulted in errors because the keyboard focus started
in an entry field and pressing enter here did not work. Moving the
focus to the "OK" or "Start" button by default seems to fix this
(still no click/tap needed, only pressing enter while the button is
in focus works).
* Save session variables in the database, so the settings made for
plain text training, word training, callsign training, text2cw and
download will be restored the next login.
* User group locations can be placed as markers on a map
* Forums and user groups can be set to read only by appropriate flags.
* Forum users can be banned for 24h by the moderator.
* Word/Callsign training: Show repeat button after first callsign.
* Fix broken repeat function for callsign training.
* Honor the "delayed start" setting also for callsign and word training.
* Word/Callsign training: Instead of pressing "." to repeat,
you can now also press a button to the same effect.
Using the dot doesn't work on Chrome mobile.
* Show warning when no texts found that match the selected
criteria in word training.
* Accept å for à
* Show number of users online
* Major code cleanup. Move hardcoded values into config files.
* First working version that runs in a Docker container,
for testing and development mostly.
* Updated documentation. Prepare for open source release.
* Users can now opt to hide from the "online" display
* MorseMachine produces "buzzer" sound on errors [tnx 4Z5SL]
* Switch from mysql to mysqli interface.
* Callsign training now allows to replay all calls (click on the
call) and a mode where it pauses after each error [tnx 4Z5SL]
* Wordtraining: When less than 25 words are available for the
selected parameters, allow duplicates. [tnx AA7F]
strikethrough text to forum
* Add MP3 as alternative source to HTML5 player snippet (text2cw)
* Cleanup in Callsign/Wordtraining
* Remove display of "0 Attempts" from main overview
* Added pluralized versions to various strings (members, attempts)
* Make it possible to have different plural forms in translations
(as needed e.g. in Slavic languages) (tnx Jerry A.)
* Added Serbian to word training (tnx YU0W).
* Ignore spaces in user input for callsign / word training (tnx Jerry A.)
* Fix x axis scaling of graphs for 13 .. 17 entries (tnx DO1PSY).
* Fix y axis label positions / spacing (no more overlap with axis)
* Deleting results on the main page is now done in the
background by AJAX, which makes it a lot easier/faster
to delete many entries.
* Show number of attempts done on overview / main page for each
* Added Italian proverbs to Plain Text Training (tnx I5SKK)
* https enabled for lcwo.net with self-signed certificate
* Add "cancel" button in plain text training attempts (tnx K7CPY)
* Remove obsolete functions (f10spaces) and clean up
* Changed text in the input area to fixed width/monospace (tnx K6WRU).
* Fixed error reporting for groups with variable lengths (tnx DL6ER)
* Moved everything into a new directory
* New paths for api calls etc.
* Major code cleanup (remove millions of warnings by
using proper strings instead of constants, e.g. $_SESSION['good']
instead of $_SESSION[bad], etc.
* Fixed issue in Plain Text training when text contained
quotation marks (tnx Jerry A.).
* Czech dictionary added for word training (tnx OK1DNA)
* Download for Word training with CW abbreviations fixed.
* Signup requires solving a captcha now, for certain IP address ranges.
* Performance of highscore calculations improved.
* New interface language Srpski (tnx YU0W)
* New interface language Norsk (tnx LA6ALA)
* Account settings now include a field where the user can chose the
closest server (by continent - currently servers in Europe and
North America available). This will decrease loading times and
latencies, especially for the Morse Machine.
* Disable autocomplete, spellcheck, autocapitalize and autocorrect
in Morse text entry forms.
* Update MP3 download page (multiple languages/sets for word training)
* Fix errornous output of MP3 downloads if random tone frequency was
selected. (closes bug #7)
* Make changes in lesson/length/code group mode, etc. "auto submit"
(closes bug #6)
* Word training now allows to select multiple collections
for one attempt, i.e. you can mix languages etc.
* Added possibility to have more than one word collection per
language for word training.
* Updated German word lists (tnx DL1AKP)
* Added Brazilian Portuguese translation (tnx PY3MAY)
* Minor enhancement to TX training: Second button for touch events.
* Security enhancements.
* Start of lessons or code groups can now be delayed by up to
10 seconds ("Delayed start" parameter in the CW Settings)
* Atom feeds (atom.xml/forumatom.xml) now serve proper
* Fixed generation of variable length groups (tnx K6DMT)
* OGG/Vorbis headers fixed; HTML5 should work reliably now.
* Callsign and Word training: Pressing "." before attempt starts
doesn't produce "undefined" anymore, instead starts the attempt.
* MorseMachine: Allow to start session with spacebar
* Improved accuracy of lesson / group duration (setting vs.
actual length) significantly
* Moved CW generation to a different server, with improved
CGI version of ebook2cw (new release 0.8.2 to be out soon)
* Fixed little bug which sometimes causes "UNDEFINED" to be
sent instead of callsigns or words.
* Fixed error reporting; character '0' is no longer equivalent
to an empty string.
* Fix calculation of real speed for Farnsworth
* Wordtraining: 2 or less characters work now, even if there
are less than 25 different words in the database.
* Draw gray line at 90% in stats graphs for Koch/code groups
* Allow anyone to post in forums of _public_ user groups.
in MorseMachine (tnx TA2RX)
* Made User group subscription texts translatable.
* Private groups are no longer included in moderation
* Ukrainian translation now "official", tnx UT4UQN!
* Number of forum posts now shows only approved posts.
* Added Ukrainian language (preliminary, thanks Mikolaj, UT4UQN!)
* Fixed HTML output in "Who is online?" box (" => ")
* Some measures against spam-bots
* Changed QTC trainer repeat function to F7 / F8 key
* Small updates in language files (various languages)
* Editing of Forum posts re-enabled for whitelisted users
* Added variable CW frequency and repetition functions to QTC trainer.
* Some security enhancements.
* Changing user names re-enabled.
* Added new language: Bulgarian, thanks Tony, LZ3AI
* Changing user names temporarily disabled.
* New Forum posts need to be approved by a moderator.
* Privacy enhancements.
* Disabled Koch course highscores due to scaling problems.
* Fixed one-off-bug ("spurious character" in lesson 9); tnx KB3TZK
* Subscription to usergroup-forums by email added.
* Initialization of download-settings for users who are not logged in
* Added "Download all"-button on download-page (experimental)
* Improved grading algorithm for groups
* Add warning message for malformed text entry (e.g. missing spaces).
* Randomness of variable group lengths now weighted, 2 / 7 less likely
than 3 / 6 less likely than 4 / 5
* Randomness of letter probabilities weighted in Koch course. Letters
of later lessons are more likely to appear more often in the texts now.
* Improved Koch course stats (graphs for single lessons available)
* Fix broken CGI address in MorseMachine / HTML5 mode
* Added Chinese translations (traditional = zh, simplified = cn)
* tex2cw now saves the settings, if changed from default
* Word training now also can be limited to words for a particular lesson
* Decreased delay before MP3 playback starts
* Abbreviated numbers in code groups no longer affect mixed text
* Add rel=canonical links
* Fix single quotes / apostrophes in custom characters
* Fixed error in URL for new character functions in Koch course
* Added a constant CGIURL in an emergency operation to redirect the broken
CGIs of lcwo.net to another host.
* Fixed escaping of apostrophes in Plain text training
* Fixed HTML for the Alternative Flash player (missing colsing div)
* Moved to new server with MySQL 5 and PHP 5
* Improved some SQL to reflect new MySQL5 functions
* Limit number of lost password requests based on IP, username and date
* Add wordwrap for reply-text in personal messages
* "Who is online?" stats are no longer reset on the top of each hour
* Changed PHP version to 5.2
* Redirecting www.lcwo.net to lcwo.net
* Updated eham ratings / cosmetic changes
* Minor bugfixes (HTML, Atom feed validity)
* Added Abbreviated numbers to the Code Groups training (req. DF9TS)
* Improved readibility of the Forum feed
* Quoting bug fixed
* Forum Atom feed date and URL format fixed
* Added some new translating items
* Added French (tnx F5IHN) and German "About" page
* Changed some relative URLs to absolute
* Added "direct player link" to text2cw results (e.g. to send
a link in a mail, with encoded text)
* Ignore VVV = or AR if entered (groups, koch)
* Improved readibilty of CW Settings page
* Changed Error 404 page
* Added Personal Message features to the forum
* Added Spanish "About" page (tnx EA1GBX)
* Improved callsign database handling for callsign training
* Uploaded Turkish translation (TNX TA2RX!)
* Started localizing the "About" page
* Added some more missing translation items
* Added rel="nofollow" to different sortings of user list to reduce
redundant search results
* Little bugfix in forum avatar display
* Added some missing translation items (tnx TA2RX)
* Proper removal of all data from users who delete their account.
* Fixed word-wrapping of Play/Pause button
* MorseMachine now shows effectice speed (tnx N2MCS for the suggestion)
* Added Digg-Button
* Improved translation system
* Added "Delete Account"
* Localized MorseMachine strings
* Added MP3 support for HTML5 / Apple Safari
* Added Atom / Twitter icons to News and Forums
* Fixed group length for calculation of error rate if it's not default (5)
* Added HTML snippets to the text2cw page to include in user's websites
* Fixed usergroups joins/approvals etc.
* Small bugfixes for Clean URLs
* Small fixes in Forums
* News database driven now (finally!)
* Added Atom Feeds for News and Forums
* Changed html title to include "Learn CW Online" instead of LCWO.net
* Clean URLs implemented + speaking URLs for Forum topics
* Updated some translations
* Forum allows basic quoting. Only works one level deep, no nested quotes.
* Cosmetic changes on about-page.
* Made LCWO-logo a link to /
* Added eham.net and dxzone.com rating links etc.
* Improved titles for better readability and search engine indexing
* Fixed error in Plain Text training (simplify characters)
* Cursor in QTC trainer always goes to the end of the field now. Only has
an effect in IE; in Firefox it did that anyway by default.
* Improved the MP3 Download section. It now remembers all settings within a
session and a little tutorial was added, describing the usage of a
* Experimentally supporting an alternative Flash MP3 player
* Allow user group admins (founders) to modify group details (name,
* Change font for pre-formatted text
* Modify page title according to Forum thread titles
- Added Reset button
- Use tone frequency from user settings
- Allow to change error bars arbitrarily by clicking on them
- Repeat wrongly copied characters until they are copied correctly
or return is pressed (= penalty on error bar)
- Visual feedback of copied letters (correct = green, wrong = red)
* Added a beta of the "Morse Machine", a la Ward Cunningham, K9OX.
is loaded when switching from HTML5 to Flash
* HTML5 player vertical size fixed, so it doesn't momentarily "grow" while
loading a new file.
* Speed limit, fixed speed, and filters for long/unusual/slashed calls now
available in callsign training.
* Added meaningful titles to most pages
* Repeats are now possible in callsign and word training by pressing "."
* Small change of the contact form
* QTC training supports abbreviated numbers
* Added optional minimum character speed to Callsign and Word training.
Below the minimum speed, Farnsworth is used (suggested by SQ6JNX, tnx).
* Sort user groups by group-id on the groups overview
* Cosmetic improvements of the signup-dialog
* Added English descriptions of all languages at important points (e.g.
user profiles, account settings, etc.)
* Made sure that empty forum posts are not possible anymore
* Limited access to forum threads in private groups to actual group members
* Reset settings of the "test" user account regularly
* Cosmetic changes to the HTML5 player (size, MP3 link)
* Fixed letter preview in Koch lessons for HTML5 player
* Improved Flash 10 player initial spaces
* Added a CW-CGI that generates OGG/Vorbis instead of MP3
* Added a native HTML5 audio player option
* Minor changes to "about" and "impressum" pages
* Added Italian words to Word training (tnx Stefano, IN3AEF)
* Cosmetics in statistics overview on profile page
* Fixed bug in graph average generation
* Added Avatar to forums
* Removed support for HTML tags in forums, replaced by BBcode
* Added Dutch proverbs
* Added "real" speed calculations
* Fixed some small bugs which related to extra spaces in received texts
* Added Plain text training and QTC training to statistics overview
* Several minior optical improvements
* Added Malay (tnx 9M2RIE).
* Added Thai (tnx HS8JYX).
* Added Dutch to Word Training (tnx PA0WV)
* Improved parameter dialog for callsign training a little.
* Added to plain text training: English proverbs (619), American proverbs
(169), German proverbs (184)
* Plain text training now remembers chosen database through a session.
* Added Portuguese to the word training database.
* Fixed bugs in word training and callsign training; max-speed now
correct in all cases.
* Rewrote plain text training. More languages and databases will be added
* Added quick access to usergroups in left hand side menu
* Custom code groups included in personal statistics.
* QTC highscores show topspeed regardless of # of attempts
* Added Croatian translation, tnx 9A2JK!
* Updated Suomi translation
* Highscores for QTCs now also have a threshold value for attempts
* QTC speed now shown on QTC page
* Added a small stats overview to the profile pages (optional)
* Code groups duration can be set up to 30 minutes now
* Leaving user groups is now possible.
* Fixed warnings on empty group-highscore lists
* Callsign training remembers speed and uses the tone frequency from the CW
settings. Automatic focus of the submit button in the first dialog.
* Short URLs for user profiles, like http://lcwo.net/u/dj1yfk
* Fixed bug in MP3 file download area
* Callsign training and Word training now notifies you if you
make a new personal highscore, and shows current standings.
* Added Spanish wordlist to the word training.
* Word- and Callsign training improved (submitting of score
automated; callsign list doesn't disappear).
* Added new language: Catala. Tnx Salva, EB3CML!
* Added some Q-groups to the Word training (CW)
* Code group mode (letters, figures, ...) is now saved in the
database after once setting it.
* Updated the "About" page
* Added a contact form to the imprint
* Added Word training to the practice file downloads
* QTC highscores are now properly filtered for user groups.
* Fixed a little bug in the QTC trainer (grp/nr was sometimes
* Added WAE link to the front page
* Some "New Attempt" links and "Play/Pause" buttons now
automatically get the focus when the page loads, so they
can be accessed just by hitting "Enter" (instead of using
* Added QTC-Training and Word-Training to the highscore lists
* Added "CW abbreviations" as new "language" to the word
* Cleaned some translation items; finished German translation
* Added Hungarian (magyar) as a new language.
* Some optical enhancements (play button, user group display)
* Fixed access for viewers who are not logged in to public
* Koch course now accepts ";" instead of "?" (easier to type
on some keyboard layouts).
* Slightly rearranged lesson result display
* Added link to News to the Menu
* Added this Changelog
* Improved spam filtering for the Forum
* QTC-trainer now fully translatable.
* Speed in QTC trainer passed by GET instead of POST
* Word training now allows setting the tone (fixed or random)
* Added French word list for Wordtraining
* Signup/Register form: Form data is saved if an invalid or
taken username was chosen.