# HISTORY.txt

28 Jul 2002     0.1

    First version of Kaa. This version is capable of storing and retrieving
    entries, using the gadfly database, but not much more.

29 Jul 2002     0.2

    Kaa lives! First successful attempt to render HTML based on the stored
    messages (or "entries").

30 Jul 2002     0.3

    Added an input screen for (some fields of) the blog information. It's a bit
    of a pain to "associate" arbitrary widgets and their contents with database
    fields. >_<  So far, I'm only using Text widgets... I hope I won't need
    anything "fancy" like drop-down boxes. Well, that is something for later.

    All we need now to start blogging (experimentally, though) is server info
    and a way to generate page names (and archives?), and upload them.

31 Jul 2002     0.4

    Added first, simple version of publishing. Generated ("posted") documents
    go in a separate folder (html_foo, where foo is the id of the blog), and
    all files in that folder are uploaded. (At least, that is what happens
    currently. Later a more efficient scheme may be used.)

04 Aug 2002     0.4.1

    Added basics for some text manipulation in the editor. Bold, italic and
    underline tags can now be wrapped around text. An error is displayed (well,
    in text mode for now) if there is no selection. (Hmm, maybe the default
    should be that we just insert the tags, with an empty string between them,
    at the cursor position...?)
    Also added stuff for entering an URL. (The tkSimpleDialog needs to be
    replaced, though...)

04 Aug 2002     0.4.2

    Bumped to 0.4.2. Added HTML quoting and unquoting (you know, ">" becomes
    "&gt;" etc.)

04 Aug 2002     0.4.3
        
    Bumped to 0.4.3. If I want to "release early and often", I should at least
    remove my FTP server's login and password from the code. ;-)
    So now the FTPInfoDialog works, and so does loading and saving of FTP
    server info. (Yay!)

05 Aug 2002     0.4.4

    Added archive support. There's no way yet to set the preferred archive
    method, so this is only internally for now, but that will change soon.

07 Aug 2002     0.4.4.1

    Not really a new version, more a step in the right direction: added a
    Configuration class, plus BlogInfo and FTPInfo classes that derive from
    these. These objects can be loaded from file and written to one; lines in
    such files have the simple form 'name = value'. They will soon replace the
    configuration database tables.

08 Aug 2002     0.4.5

    Dialogs for entering blog and FTP info now use configuration files rather
    than database tables. ^_^

08 Aug 2002     0.5

    A new option BlogInfo.archive_method sets the archive method; this is used
    when generating archives.
    Added config_actions.py, where custom buttons and key bindings can be
    defined. Maybe also menus.

    Rolled creation of archives and front page into one. This way, the front
    page knows about the names of the archives. (I hope. :-)
    It is now possible to delete entries.

09 Aug 2002     0.5.1

    Added num_entries_fp field to BlogInfo (and input dialog).
    Added a default_author field in the same way. (This may, or may not, be
    overridden later if entries get an author field. If.)
    Added .count attributes to Blog and Entry instances directly before
    generating pages.

09 Aug 2002     0.5.2
    
    Added anchor support. To make this work, the user must drop an "anchor" tag
    in his entry template, like this:

        <a name="e<% entry.blogentry_id %>"></a>

    A link can then be created using <a href> and the entry.anchor attribute,
    which is the file#anchor or just #anchor to be linked to. Works best with
    archives enabled.

    Added Blog.archive_list() to generate a canned list of archives.

10 Aug 2002     0.5.3

    Added the first checkbox to the bloginfo input screen. (The option can be
    set, but doesn't do anything yet.)
    Added a Preview function, which starts up the default browser with the
    first page.

12 Aug 2002     0.6

    Added stats.py file, which (for now) stores only the publish_date.

15 Aug 2002     0.6.1j

    Important change: Kaa now holds an Entry instance rather than an entry id.
    This is done because entry attributes will be added soon. They're (still)
    associated with the entry.misc field, which now contains a dict rather than
    a string. This is converted whenever we store or load an entry (or several
    of them).

    At this point, attributes are loaded and saved, but nothing can be set yet,
    except for the 'visible' attribute. (This should be used for generating
    blogs... only visible entries are posted.)

    That will be another problem, by the way... it would have been much easier
    if there was a 'visible' database field... so we could query for all
    records where visible=1. Now, we cannot do that. ::frown::

15 Aug 2002     0.6.2j

    Making entries (in)visible works now. Invisible entries are not posted. It
    seems that everything else still works nicely. Invisible entries are
    ignored in an early phase of rendering HTML, so archive methods depending
    on the number of entries should still work correctly, without leaving
    "gaps" for the invisible entries.

15 Aug 2002     0.6.3j

    Hacked up a simple HTML-macro system, based on a post on diveintomark. It
    may need some refinement, but it does work! ^_^

17 Aug 2002     ...

    Added (unfinished) first version of category_entry_input.py, the input
    screen for associating categories with entries.

18 Aug 2002     0.6.4j

    Finished category_entry_input.py. Now the "categories" button allows us to
    associate categories with an entry. Also changed the template to show these
    categories.

18 Aug 2002     0.6.5j

    Added a StatusBar widget. ^_^  Is more important than it seems, because
    it's very helpful to see the name of the current blog, or a message "no
    blog loaded" somewhere.

    Also added some buttons and a button separator. Publish button now works,
    and there's also a "one-click publishing" button.

21 Aug 2002     0.6.6j

    Minor improvements. Fixed the <Tab> key so it can now be used to switch
    between the two Text widgets. Also added a vertical scrollbar for the HTML
    editor.

23 Aug 2002     0.6.7j

    Added screen for managing categories per blog.

23 Aug 2002     0.6.8j

    Added generation of category pages. (These are not exactly archives... more
    like front pages per category.)

23 Aug 2002     0.7

    The official 0.7 release :-) with category support. This is also the time
    that I will move the weblog from Angelfire to earthlink.
    Lots of minor changes and bugfixes here. For example, the Publisher class
    now creates the start directory if it isn't present on the FTP server.
    (Caveat: this probably won't work for nested directories.)
    The template now also supports category pages. ^_^ Category links simply
    jump to that page rather than to the entry. (That entry might not even be
    on the category page (anymore).)

25 Aug 2002     ...

    Databases now have a generic name "database.gfd", this is easier for
    copying a database.

28 Aug 2002     0.7.1

    Fixed bug that caused the first N articles to show up in the category
    pages, not the last N.

02 Sep 2002     0.7.2

    On to 0.8, which will have "content management-esque" features. In fact,
    the current version of Kaa is capable of generating a page with a list of
    all entry titles (& dates). IOW, it uses a different entry template than
    the default.

    Problem: We somehow need to inject stuff, so we can create links that point
    to the appropriate archive. Hmm.
    Problem 2: I'd like to put these in a table, or something... need to find
    something for that.

    I see that the "permalinks" on the category pages point to themselves as
    well. This is OK for archives, but everything else should either not point
    to anything, or point to the archive entry. Must fix.
    ...Maybe a "meta" class could help here? Something that stores the places
    where entries are archived, and returns an appropriate URL? We could then
    say something like:

        blog.meta.get_permalink(entry.blogentry_id)
    
    All these metadata should be stored in the 'meta' instance then, rather
    than clogging up the Blog instance's namespace.

    I think we need to separate the "split entries up in groups and generate
    archive names" part from the rest.

05 Oct 2002     0.7.3

    Embedded code in messages works now too. This is either a bugfix, or a new
    feature, since I always intended this to work. :-)

    An optional file globals.py in the database/blog directory is read, and
    variables are made "global" for embedded code in messages. This allows for
    "shortcuts" or "simple macros".
    Of course, the file can also be used to keep any code you want to use in
    your messages (or templates), without having to import explicitly.
    
06 Oct 2002     0.7.4

    Added blog.archives attribute, which contains a list of tuples (pagename,
    ids), data about archive names. The blog.get_permalink(entry_id) method now
    generates a permalink, and is used in the custom page list.html.
    blog.arch_page_names is now obsolete and will be removed.
    Code that sets blog.archives is moved to kaa.prepare_blog().

10 Oct 2002     0.7.4.1

    Moved some code around. This is not really a new version. There's a big old
    mess that needs to be cleaned up. entry.anchor should be set using the new
    blog.get_permalink() method. And this stuff should be set in prepare_blog,
    if possible.

10 Oct 2002     0.7.5

    Refactoring, and introduction of HTMLWriter. kaa.post_blog has much better
    code now.

13 Oct 2002     0.7.6

    More refactoring. Fixed entry.anchor, it now always points to the correct
    permalink (I hope). Also moved _set_anchors() around, it's now done by
    HTMLMaker.make_page, which is called by all page making code.
    Added some documentation (doc/embedded_code.html).

19 Oct 2002     0.7.7

    Added tabs to fields in bloginfo input screen.

27 Oct 2002     0.8

    Kaa 0.8 released.

02 Jan 2003     0.8.1

    Added two new buttons, 'code' and 'blockquote'. (Mostly for own use.)
    Added new checkbox in configuration, "Generate RSS". At this point, it
    doesn't do anything yet.
    
02 Jan 2003     0.8.2

    Kaa can now generate an RSS file (new checkbox in config dialog). If it 
    does, it will have the name {foo}.rss, where {foo} is the name of the
    blog. (E.g. in my case, totm.rss.)
    Added some new functions to htmltools.py for this purpose. The RSS file
    contains a summary of each entry included. (This is merely the first
    sentence of the post, plus the number of words...)
    
    Fixed some bugs that caused numbers in configuration info to be handled
    incorrectly. (E.g. "0" was considered 'true', because its truth value
    was taken before converting to number.)
    
07 Jan 2003     0.8.3

    Added errors.py, with ErrorDialog, which is a convenient way to display
    error messages. (Also very necessary, for those who don't see the 
    console...)
    
07 Jan 2003     0.8.4

    Also added ExceptionDialog.