RAM-CMS CHANGELOG
==================

0.3.0 (in development)

0.3.0rc1 (18 August 2008)
 - Note: (PHP) PHP 3 no longer supported
 - Note: (PHP) PHP 4 before 4.3.0 no longer supported
 - Note: (ASP) VBScript before 5.0 no longer supported
 - Note: (Perl) mod_perl no longer supported (it never worked quite right)
 - Note: this code is highly experimental, thus it is suggested you stay 
   with 0.2.5 if stability is a major concern (much code has changed and 
   heavy testing has yet to occur).
   Because of the big code refactoring the ports to 
   non-modern-PHP servers is not done yet, and will take a while.
   Because of the major changes the ports may take a while for the core 
   feature set + important extras to become fully 0.3.0 compliant.
 - Added: new config option: $conceal - allows easy suppression of 
   [[ver]] and X-CMS: headers for people who don't want anyone to know 
   anything particular about RAM-CMS.
 - Removed: page generation is no longer timed - saves cpu cycles.
 - Removed: [[gen_time]] is no longer supported.
 - Added: new config option: $nicelinks - can be enabled in combination 
   with mod_rewrite to make links be page/name instead of ./?page=name. 
   See PAGES.TXT for more info.
 - Change: BBCode feature enabled by default.
 - Note: dramatic improvement in page caching.
 - Change: Expires header set to one hour from request date when caching 
   is enabled.
 - Added: Last-Modified header is now sent for cachable requests.
 - Change: Cache-Control and Pragma headers changed from private to public.
 - Added: RAM-CMS now supports sending HTTP 304 Not Modified responses.
 - Change: PHP editions of RAM-CMS now pass big variables by reference 
   like the perl edition - huge decrease in memory and cpu usage.
 - Note: README file finally updated (it hasn't changed since before we forked).

0.2.5 (18 July 2008)
 - Note: many of the updates were backported from the 0.3.x development branch. 
   We have made every effort to preserve compatibility, but the 0.2.x codebase 
   is such a mess that this will most likely be the last release of the 0.2.x 
   branch.
 - BugFix: Classic ASP now supports complex BBCode.
 - Note: Major documentation update.
 - Added: new bbcode tag: [link]. It works just like the [url] tag, 
   except is designed for internal links between pages in RAM-CMS.
 - Added: new page template tag: [[baseurl]]. It contains the base 
   url of the RAM-CMS install, and is useful in <base> html tags.
 - Note: [[gen_time]] is discontinued and will be removed in 0.3.0.
 - Change: all templates modified to include <base href="[[baseurl]]">
 - Change: all templates updated to remove [[gen_time]]
 - Change: default theme changed to a very plain default (the only one 
   included in the download). See http://www.nongnu.org/ram-cms/ for 
   additional themes.
 - Note: mod_perl edition of RAM-CMS is no longer fully supported 
   (it may still work though). Please consider switching to a different 
   edition of RAM-CMS soon as 0.3.0 will most certainly break mod_perl.
 - Change: page templates / themes are no longer bundled by default since 
   they are the same in each edition / version. Visit 
   http://www.nongnu.org/ram-cms/ to download additional themes.

0.2.0 (04 May 2008)
 - Note: configuration files cleaned up.
 - BugFix: Perl port: modperl.htaccess cleaned up, now works properly.
 - Change: when strip_whitespace is enabled, the entire output stream is 
   compressed, not just the page specific data.
 - BugFix: strip_whitespace now also strips carrage returns.
 - BugFix: Perl port: bcode feature now 100% working 
   (advanced constructs didn't work 100% properly due to regex oversight)
 - Note: RAM-CMS Ported to ASP (VBScript) (tested on IIS 5.0 / W2K)
   A working copy has been released, and platform-specific documentation 
   will be written soon. Be advised that the ASP edition has had very 
   little testing, and at the moment just works. It will be brought up 
   on par with the PHP and Perl editions soon. Note that this currently 
   fails on ASP.NET - we plan to support that eventually.
 - Removed: removed documentation that is no longer relevent.
 - Removed: removed [[description]] and [[keywords]] since is isn't possible 
   to set these per-page, and thus were worthless.
 - BugFix: PHP edition: removed setting of PHP_SELF / index_file (no longer used)
 - Note: cleaned up themes a little.

0.1.0 (27 April 2008)
 - Change: Perl port now use's strict and warnings.
 - Added: Perl port now works under mod_perl.
 - BugFix: Perl port now supports page [[updated]] time tag.
 - Note: Perl port code cleanup, more efficient.
 - BugFix: Perl port now handles 404 correctly instead of exiting with 500.
 - BugFix: Perl port no longer emits warnings about comparison to errorlog.
 - BugFix: Perl port now supports bbcode feature.

*************************************************
* RAM-CMS Lite has become the main edition. 
* Everything below here is the changelog 
* for the legacy edition of RAM-CMS. 
* Since the current edition is based on the 
* legacy codebase, it seems logical that 
* developments done to it would be included.
*************************************************

*************************************************
* Development efforts on RAM-CMS 1.0-beta1 
* revealed many issues related to code design 
* and feature implementation. It was decided 
* that the only way to move forward was to 
* break everything, thus an internal fork was 
* created, called RAM-CMS Lite, which has now 
* evolved to fully replaced RAM-CMS. 
* The old codebase has been renamed to 
* "RAM-CMS Legacy" while RAM-CMS Lite is now 
* "RAM-CMS." with version numbering restarted - 
* you can distinguish between the two as the 
* legacy RAM-CMS used x.x version numbers whereas 
* new RAM-CMS uses x.x.x version numbers. Users 
* of RAM-CMS Legacy should upgrade to RAM-CMS 
* 0.1.0 as soon as it is released, and then 
* start upgrading from there to the latest 
* version of RAM-CMS.
*************************************************

1.0-beta1 (21 March 2008)
 - Notice: This release introduces many "replacement" features that 
   improve the way things are handled by RAM-CMS. While this doesn't 
   break compatibility, it is highly suggested that all users update 
   to these new methods for both performance reasons and because the 
   new methods are easier for both of us to use and maintain.
 - BugFix: the 404 page now correctly returns "HTTP/1.0 404 Not Found"
 - Update: removed $SERVER_SOFTWARE code since it is no longer used 
   (forgot to kill it in 0.9).
 - Update: the theme files have all been updated to use the new 
   code-less theme format. Traditional PHP style theme files are still 
   supported. If you want to use traditional format theme files, then 
   see UPGRADE.TXT
 - Update: nav.php has been removed. A code-less version 
   of nav.php, called nav.txt, has been developed and should be used. 
   See UPGRADE.TXT for details on how to port your existing nav.php 
   file over to code-less nav.txt format. There is no compatibility 
   mode for this since nav.php is a very small file and conversion to 
   the new code-less nav.php format takes less than one minute, and 
   thus is incredibly easy to do. If you are stubbern and don't want 
   to update to the new nav.txt version, don't update your theme files.
 - Update: new theme tag: [[nav]]. It represents the navigation menu 
   contained in nav.txt (formerly nav.php - if you continue to use 
   nav.php instead of converting to nav.txt then you cannot use the 
   [[nav]] theme markup tag.)
 - Update: Lite Version of RAM-CMS Released. It is a lightweight version 
   of RAM-CMS for those of us who don't need things like dynamic pages, 
   or for those of us that value performance and compatibility over 
   features. See LITE.TXT for a list of differences between the 
   standard version and the lite version.
 - Update: Perl Port of RAM-CMS Lite Released!
 - Update: 2 documentation files added: LITE.TXT and THEMES.TXT. LITE.TXT 
   details the differences between the standard release and the lite 
   release, and THEMES.TXT details the traditional and code-less theme 
   formats.
 - Update: the XHTML 1.0 themes have been removed for the time being since 
   the author of RAM-CMS doesn't like the direction the W3C is 
   going with XHTML (I tried making RAM-CMS XHTML 1.1 compliant, and 
   it was more trouble than it was worth.) RAM-CMS will continue to support 
   XHTML 1.0, but if you want to use it you must supply your own themes.
   The XHTML 1.0 themes that shipped with RAM-CMS 0.9 can still be used - 
   download RAM-CMS 0.9 and use these themes (they are in traditional 
   format so you'll have to use the info in UPGRADE.TXT to get them to work.)
   Also, RAM-CMS will never support XHTML 1.1 or later officially, although 
   it might (and probably will) work. RAM-CMS will support future versions 
   of HTML, the most notable being HTML 5 (I'll talk about that when the 
   time comes - 2012 perhaps).
 - Update: as you might have inferred from the above, RAM-CMS now defaults 
   to $xhtml=false in config.php
 - Update: added $pages_dir to config.php. This settings makes it possible 
   to change the location of "pages" directory.

0.9 (24 February 2008)
 - Note: THIS RELEASE BREAKS COMPATIBILITY WITH RAM-CMS PRIOR TO 0.7!!!
   If your original installation of RAM-CMS was version 0.6 or earlier 
   and you have just continually upgraded index.php and functions.php 
   without changing config.php then your installation will break unless 
   you first upgrade to RAM-CMS 0.81 and make your config.php absent of 
   depriciated items (read docs/CONFIG.TXT and make your legacy config.php
   match all the settings, meaning that it doesn't have any extra settings 
   or is missing any settings).
 - Update: added $site_name to config.php. This setting adjusts the page 
   title text (the page title as it appears to viewers is 
   page_title - site_name). This is implemented in the template files 
   as [[site]]
 - Update: added $copyright to config.php. This setting adjusts the page 
   copyright message, denoted in the page templates as [[copyright]]
 - Update: added $keywords to config.php. This setting inserts whatever 
   you put here into the template like so: 
   <meta name="keywords" content="[[keywords]]">
   This is very useful for search engines.
 - Update: added $description to config.php. This setting imserts whatever 
   you put here into the template like so:
   <meta name="description" content="[[description]]">
   This is very useful for search engines.
 - Update: all 9 page templates / themes have been updated - the template 
   files should never need manual tweaking again - if you are upgrading and 
   have tweaked a template, migrate your tweaks into config.php using the 
   two above updates.
 - Update: new theme added: centerstage.
 - Update: new theme added: foundation.
 - Update: new theme added: advertising.
 - Update: $xhtml now defaults to true in config.php
 - Update: the page templates now ship in two formats - XHTML 1.0 Transitional 
   and HTML 4.01 Transitional. The new XHTML 1.0 templates have -xhtml1 at the 
   end of their file names, while the legacy HTML 4.01 templates have -html4 at 
   the end of their file names. The reqular template file detects whether $xhtml 
   is true or false and loads the applicable template (new users get the 
   XHTML 1.0 by default, older users continue to get HTML 4.01 until they set 
   $xhtml=true in config.php).
   All users of RAM-CMS are encouraged to either update all their pages to be 
   XHTML 1.0 Transitional compliant, or update them to use 
   the BBCode feature so that (X)HTML version changes in the future have 
   little to no effect.
 - Update: updated the default pages that ship with RAM-CMS (they are all 
   in valid (X)HTML now).
 - Update: updated the 404 page that ships with RAM-CMS - it is now (X)HTML 
   compliant.
 - Update: the default character set in the template files has been changed 
   from ISO-8859-1 to UTF-8.
 - Update: converted some of the documentation from plain text to HTML format. 
   Windows and Apple users should now have no problem reading the documentation 
   since it can be done via web browser (web browsers can read HTML and TXT).
 - Update: removed legacy 0.53 stuff from archive.
 - Update: removed compatibility with pre-0.7 convention of putting 
   $page_template inside config.php instead of in a theme file under ./themes/
 - Update: [[php_version]] and [[server_software]] tags now no longer supported 
   (these tags should never have been implemented, and now have finally been 
   removed).

0.81 (14 February 2008)
 - BugFix: certain config settings were not being tested for correctly and this 
   caused forced defaults for these variables. This has been fixed.
 - BugFix: because of the above bug, the cache mechanism was malfunctionng, causing 
   nothing to be cached. This has been fixed.

0.8 (25 January 2008)
 - Update: if you use the page directories feature to organise your site then 
   this update is for you. RAM-CMS now supports $def_page in subdirectories 
   of pages. For example, say you have a directory named stuff in the pages 
   directory. If you have a $def_page file ($def_page is home.php by default) 
   in stuff then calling RAM-CMS with ?page=stuff/ will load home.php instead 
   of returning 404. If there is no home.php in stuff, 404 is returned like 
   before. Note that a trailing slash must be present for this feature to work 
   because simply calling ?page=stuff wil cause RAM-CMS to look for a stuff.php 
   file under pages instead of a home.php under stuff. Got that?
 - Update: new themes added: clementine, newsprint, and warped.
 - Note: at least 27 more templates are being made RAM-CMS ready as I write 
   this, and should begin to appear in subsequent versions.
 - Update: bundled pages site_map and privacy_policy have changed to site-map 
   and privacy-policy to make them more search engine friendly.
 - Update: default-theme.php renamed to ramnet-theme.php
 - Update: /res directory removed as it is no longer needed.
 - Update: themes now have unified navigation menu components via use of 
   nav.php file. Any template will use this as navigation menu area.
 - Update: new documentation file: UPGRADE.TXT - this details quickly 
   upgrading RAM-CMS from previous versions.
 - Update: now correctly sends HTTP/1.1 headers. Previously only HTTP/1.0 
   headers were valid along with a partial HTTP/1.1 header set.
 - Major Change: True CGI mode (via $as_cgi) is no longer supported due to the 
   insecure and just plain uncommon use of this feature.
 - Update: new config.php option: $bbcode
 - Update: RAM-CMS now has experimental support for BBCode markup. This 
   feature should not be enabled in production settings just yet. To enable, 
   set $bbcode to true in config.php.
   Note: BBCode is only allowed in page files and not in templates.
 - Update: RAM-CMS will now change all Apple Mac line edings to UNIX style.
 - Update: RAM-CMS will now change all DOS / Windows line endings to UNIX style.
 - Update: new config.php option: $xhtml
 - Update: RAM-CMS internals are now capable of handlng XHTML in addition to 
   HTML. If you want to use XHTML then set $xhtml to true and make sure that 
   raw HTML inside your pages is either converted to BBCode or converted to 
   XHTML. This does not affect page templates/themes (theme file must use a 
   corresponding (X)HTML DTD otherwise invalid markup may result).
 - Update: new config.php option: $strict
 - Update: RAM-CMS internals are now capable of handling "Strict" markup 
   (as opposed to "Transitional" or legacy markup) as defined by the W3C. 
   This feature mosty applies to the BBCode parser. This does not affect 
   page templates/themes (theme file must use a Strict DTD otherwise invalid 
   markup may result).
 - Update: <pre> and <textarea> tags now correctly handled when stripping 
   whitespace.
 - Update: new config.php option: $strip_whitespace
 - Update: whitespace stripping can now easily be disabled.
 - Update: some config.php options can be set on a per-page basis for 
   dynamic pages by appending _dyn to the setting (e.g. $bbcode=true; 
   becomes $bbcode_dyn=true;)
 - BugFix: many internal variables were not being unset().

0.75 (25 October 2007)
 - BugFix: aqueous-theme.php updated to 0.7 style config scheme.
 - Update: 2 new themes added: slashblog and mrtechie.
 - Update: $page will always be set, so conditional $page tests in config.php 
   now no longer need to test if $page is set. Instead of $page not being set 
   it will be set to '' for simplicity.
 - Update: the last updated time is now solely dependent on the page 
   requested, so updates to config.php or index.php will not affect the 
   [[updated]] token in the template or in the page file.
 - Update: config.php options removed: $index_file
   It is okay to leave it in the config.php file, but for speed and neatness 
   it is suggested that you remove it when you upgrade.
 - Update: code comments.
 - Update: documentation.
 - Notice: Planned RAM-CMS 0.9 and above will not be compliant to older 
   pre-0.7 config files. To migrate simply copy everything in $page_template 
   into an external .php file under the themes directory and in config.php 
   set $theme_file equal to the name of that file under themes. This is being 
   done so support logic for the old method can be removed from index.php thus 
   reducing memory usage and increasing speed. This is an historic moment for 
   RAM-CMS as a change like this is likely never to occur again.
 - Update: new file: functions.php - this holds all the functions used by 
   RAM-CMS. Prior to this release, RAM-CMS had no functions. Now RAM-CMS 
   has many functions that simplify development and reduce the impact of 
   future bugs as less code is in the global space.
 - Update: I have included a "framework" that permits most "dynamic page" 
   RAM-CMS applications to be run as stand alone PHP programs, not requiring 
   full blown RAM-CMS to allow them to run. See docs/FRAMEWORK.TXT
 - Update: removed config setting: $phpversion. This variable is not required. 
   If you use [[php_version]] in your template, it will call phpersion() for 
   value. [[php_version]] usage in page templates is now deprecated and will 
   be removed in planned version 0.9, meaning [[php_version]] will pass 
   unaltered into page templates. All custom templates should remove this asap.
 - Update: removed config setting: $SERVER_SOFTWARE. It is possible to still use 
   this variable in config.php, but doing so is deprecated. [[server_software]] 
   usage in template files is now deprecated just like [[php_version]] 
   (see above).
 - Update: included template files have had all depriciated [[tags]] removed.
 - Note: deprecated in this and all future contexts means it is still 
   possible, but subject to removal later on.
 - Update: config.php is now required to be present. No more stripped defaults 
   are in index.php. This done for practical and performance reasons.
 - Update: site_map.php now no longer includes itself in the site_map listing.
 - Update: functions.php has been well commented.

0.7 (15 September 2007)
 - Update: updated the default set of pages.
 - Update: all files are no longer than 80 characters - this makes them 
   easier to read. There are a few exceptions, but only in cases where 
   splitting the line would cause problems or be counterproductive.
 - Update: added a new theme - aqueous - a popular look seen on many sites.
   I am working on adding many new themes as the current selection is quite 
   limited.
 - Update: the $page_template data in config.php has been moved to external 
   theme files, making it easier to develop themes for RAM-CMS. Old 
   config.php setup will still work just fine, however.
 - Update: changed the file names under themes directory from 
   <themename>-config.php to <themename>-theme.php
 - Update: the documentation.
 - Update: RAM-CMS now will work with just the index.php file 
   (the main program) and a set of pages. config.php and themes/my-theme.php 
   are not required for RAM-CMS to work. Rename or remove config.php to see 
   how this works (a very simple page theme is embedded in index.php if no 
   theme or config data is defined.)
 - Update: moved the old _0.53 files into 0.53 directory and secured them so 
   if the end user leaves them around they will not cause problems. It is 
   still best to delete them if you are not someone who wants to look at the 
   If-Modified-Since routines within which have been removed from the 0.6 and 
   later editions of RAM-CMS.
 - Update: more unset() variables - many "memory leaks" fixed.
 - Update: E_ALL error reporting set by RAM-CMS as proof that nothing leaks 
   out. If this causes a problem for you then 1) let me know about it and 
   2) add a # character to the start of the second line in index.php 
   (the error_reporting line) to comment out and revert to default PHP error 
   reporting setting.
 - Update: site_map page no longer complains about bad expression on line 51 
   when running on PHP 3 with error_reporting on full.
 - Update: when not caching, replaced Expires: header to equal 0 instead of a 
   date in the past - saves bandwidth and is more effective.
 - BugFix: it has and still is possible to have pages in subdirectories under 
   the pages directory. By sending a request containing ../phpfile and such, 
   or by sending ?page=/path/to/phpfile this allowed access to any .php file 
   on the system, provided php had permission to read it. Any attempts to do 
   this now will result in the 404 page being returned.
 - Note: development will now greatly slow on RAM-CMS.

0.6 (19 August 2007)
 - Note: All users are encouraged to update to this version!
 - Update: if called with ?page= then this resolves to default page instead of 
   404.
 - Update: $page is now determined before config.php is included. If you have 
   custom code in config.php that tests the value of $page then this may cause 
   problems for you. (for example: if you test the value of page to have the 
   home page template differ from other pages - in this version it can be done)
 - Update: no longer checks If-Modified-Since headers as this breaks the 
   refresh function in browsers, and if the client visits your page often, it 
   could cause the browser to cache pages forever.
 - Update: more comments added to code.
 - Update: memory and CPU usage lowered some.
 - Update: doc files are no longer than 80 characters - this makes them 
   easier to read.
 - Update: docs/CONFIG.TXT finished.

0.53 (07 August 2007)
 - Updated all the included pages to be more about RAM-CMS instead of being 
   just a copy of the internal RAM Networks site.
 - Created some themes, they live in the ./themes subdirectory, replace 
   config.php with one of the theme files to enable. The included themes are 
   very basic, as I am a programmer, not a designer.
 - changed the max-age parameter of Cache-Control to be for 1 hour instead of 
   1 day as 1 day seems a bit like overkill.

0.52 (22 July 2007)
 - Config Update: if required default settings are missing from config.php 
   then they will be set to defaults built into the main program (index.php)
 - Security Update: as above, because variables not set in config.php would 
   be overridden by variables passed in the request if register_globals was 
   turned on.
 - Note: this is the last issue I expect to need to fix that is affected by 
   register_globals being on. turning register_globals off for extra security 
   does not affect the security in this program anymore.

0.51 (20 July 2007)
 - Config Update: changed $index_file='index.php'; to 
   $index_file=basename($PHP_SELF); in config.php. This is a better default 
   then just assuming index.php.
 - Note: this may be the last release for quite a while, as I am now very 
   tired and need a good sleep to turn from half-awake programmer to regular 
   human ;) I am going to finish writing the documentation first, and that 
   will be the major accomplishments of the next releases.

0.5 (19 July 2007)
 - Note: All users are encouraged to update to this version!
 - clients may now cache pages from RAM-CMS - TTL is 1 day.
 - RAM-CMS now sends Last-Modified HTTP header to client.
 - RAM-CMS correctly reads If-Modified-Since headers from client,
   and will return "304 Not Modified" when client has latest version of file.
   this also compensates for changes to config.php as well as changes to the 
   main program (index.php)
 - new config option: index_file. Must be specified to allow 304 HTTP stuff 
   to work it simply contains the name of the main program (in most cases 
   index.php).
 - Note: with all new the features in this version, RAM-CMS will save tons of 
   bandwidth and server CPU time by not re-processing unchanged pages already 
   stored in client cache.
 - Updated the documentation a bit more.
 - site_map.php page program updated - will now only show file under ./pages/ 
   that have a php extension. All users are encouraged to update.
 - updated ./res/index.php - better determines when requested files were 
   updated - all users are encouraged to update.

0.4 (17 July 2007)
 - support for "Static Format" - see PAGES.TXT
 - added directory: docs.
 - most of documentation written.
 - slight update of routines - speed increase.
 - site_map.php updated to understand "Static Format" pages.
 - FIRST PUBLIC RELEASE !!
 - Choose a license: The GNU GPL, version 3 license from The FSF.

0.31 (15 July 2007)
 - implemented hit counter.
 - updated included config.php to reflect hit counter addition.

0.3 (12 July 2007)
 - PHP 3 compatibilty reached.
 - more sanity checks added - no longer generated E_NOTICE errors.
 - added conditional gzipping of content when browser and PHP support it.
 - updated included config.php to reflect new gzipping support.

0.2 (08 July 2007)
 - now correctly handles 404 when page requested is not found.
 - new file: config.php
 - configuration moved from inside main program to config.php
 - page file extension changed from .txt to .php for security reasons.

0.1 (01 July 2007)
 - first version - it just works.
