After a rather exhausting 24 hours:
There’s still a couple of bugs with the new site to iron out, but all in all the big switch has gone well.
So first off, Xbase 1.1.1 mostly works with Snow Leopard. There is an update coming soon (1.1.2) that will address some of the remaining issues. In particular, sending emails from scripts does not work.
1.1.2 also adds a new import system. For now it can import CSV, TSV and DBF. More formats are forthcoming.

Squish is a new app coming soon (http://squishapp.com) as a joint project with SilverCocoa. It makes shortening URLs for twitter, email, IM, easier and actually quite fun. Unfortunately, Snow Leopard broke a major component (InputManagers and SIMBL) which must now be rewritten.
To ship Squish we needed a new web store. The current store only handles one version of one product which is clearly not sufficient. Enter Inventory:

It supports multiple products, upgrade versions, coupons and is in general a nicer experience.
To ship Inventory we needed a way of logging users in and out. The current system amounts to a shared MySQL table that all web applications read. Unfortunately, this means each web app needs to build its own login and registration system which equals a lot of code duplication and very little consistency. We have at least four separate login pages for that shared table. To fix this, Fauth was born (pronounced as in “Fourth”):

Fauth is completely centralised and provides an easy API so that PHP and Django apps can talk to it. Best of all, all login pages now look the same so users can be sure that they’re logging into the same site.
■
Xbase 1.1 is out! This update concentrates on the User Interface.
Xbase 1.1 has a brand new source list. It’s been rewritten to act more like source lists in other applications. Some of the new features are:

We’ve also rewritten Xbase’s tab bar. Before, we were using PSMTabBarControl which does the job but was feeling a bit limiting. New stuff includes:

Xbase 1.1 comes with a new inspector. The inspector shows information about items in the database:

The global script console means you can now see log messages and errors for scripts not executed in the script editor (scripts run in a form for instance). As a bonus, these log messages are saved to disk so you quit and relaunch Xbase, and they’ll still be there.
Note: The log file is stored at ~/Library/Application Support/Fileability/Xbase/Console/log.xml should you wish to delete, import, export or change it

We’ve made minor improvements to the welcome screen:

Well that’s all for this update. I hope it’s been worth the wait. The next update will be version 1.1.1, which will focus on Import/Export.
You can download Xbase 1.1 here.
Xbase will be sold at a discounted price of £40 during MacHeist ‘09. If you haven’t bought already, this is a great time to do so!
We’re now on our third bug tracker since the Xbase alpha was released. All three share much in common: they’re all written in PHP, they’re all custom built and most importantly, they all integrate seamlessly with Xbase.
First there was Fbug, a simple system that couldn’t do much more than submit bugs (it was actually initially impossible to edit or delete bugs). It was written in a day or two. It did get support for editing bugs a few months later but it was so difficult to use nobody ever bothered.
Next there was Anthill 1.0, the system used until recently. It’s a slight improvement over Fbug, although it does reuse some of Fbug’s buggy code (you couldn’t insert newlines until recently, plus bug reports with no title are impossible to view). On the upside, it looks good.
Today we’re introducing Anthill 2. It’s a complete rewrite of Anthill 1. It was built to handle the influx of bug reports/feature requests since Xbase 1.0. We considered lighthouse, which is an awesome service, but at $49 per month it’s just not value for money.
Anthill 2 has some great features, which are explained more in depth on the Anthill 2 site. Here’s an overview:
Want to try it out? Head over to http://www.fileability.net/anthilltest/. If you don’t want to create an account, use a username/password of test/test.
You can install Anthill 2.0 beta right now by heading over to the anthill page.
Xbase will switch over to Anthill 2.0 in 1.0.5.
Top image is from one of the first builds of Xbase (it was called MacBase back then). 23rd June 2006 according to Finder.
Bottom image is from the latest development version.
The welcome screen is about the only part of Xbase that hasn’t changed.

Xbase 1.0.4 is out. Almost all of the changes to 1.0.4 are to do with the scripting APIs. They’ve been reorganised, improved and lots of new features have been added.
Documentation for everything you see below is available here:
The Tools class has been completely restructured (full backwards-compatibility has been retained, however).
Tools.Beep() may now take an optional argument: the name of the beep sound you want to play.
//A normal beep
Tools.Beep();
//Play the "Submarine" sound
Tools.Beep("Submarine");
//Play the "Bottle" sound
Tools.Beep("Bottle");
Tools.TextAlert() is a new function that acts rather like the prompt() function in regular javascript.
var result = Tools.TextAlert("Please enter some text...", "", "I'm done.");
Log("You pressed the button called " + result.button);
Log("You typed in the text field: " + result.text);
The new Alert class gives you greater control over. It may also be expanded in the future to give you greater control over alerts.
var a = new Alert;
a.title = "This is an alert!";
a.message = "Hello James! This is an alert showcasing the new Alert class.";
a.mainButton = "My name isn't James";
a.secondaryButton = "How did you know my name?";
a.show();
Log("You pressed this button " + result.selectedButton);
Tools.ChoiceAlert() is depreciated in favour of Tools.Alert(). Tools.Alert() now has the full functionality of ChoiceAlert() but retains backwards compatibility.
The following are depreciated:
The intended replacements are:
For example:
var button = Tools.Alert("Are you sure you want to do that?", "Doing that might do something bad, make sure you've saved before doing it.", "Do it", "Don't do it","I like turtles");
if (button == Alert.MainButton)
Log("You clicked the main button!");
else
Log("You clicked another button!");
1.0.4 introduces a new class, Log
The following are depreciated:
The intended replacements are:
The following functions are new:
For example:
Log("This is a debugging message");
Print("This prints text to the console");
PrintError("This prints an error. Errors have purple backgrounds and are easily distinguishable.");
//This will return the text of the console (as a string)
var text = Log.Text;
//This will return the contents of the console (as an array of strings, one string for each session)
var contents = Log.Contents;
//This will clear everything outputted to the console this session
Log.Clear();
//This will clear every session from the console
Log.ClearAll();
You can now access controls like this:
Form[controlName]
For example:
//Old way (still valid - not depreciated)
var c1 = Form.ControlNamed("Celsius");
//New way
var c2 = Form["Celsius"];
The frames of controls (position and size) can now be changed. As before, the visbility of a control can be changed too. These changes can also be animated with animators
//Set the frame of a control
var newFrame = Form["myButton"].frame;
newFrame.size = 100;
Form["myButton"].frame = newFrame;
//Changes can also be animated
newFrame.x = 10;
Form["myButton"].animator.frame = newFrame;
//Controls can be hidden and show using the visibility property of the animator
Form["myButton"].animator.visible = false; //Hide
The following methods are depreciated:
The intended replacements are:
The following properties are new:
As with everything else, the Data class has been rearranged and made easier to use.
You can now access tables directly using the new Tables class:
var aTable = Data["Products"];
var numberOfRows = aTable.numRows;
//Or
var bTable = new Table("Products");
numberOfRows = bTable.numRows;
Log(numberOfRows);
There’s also a new Field class:
var name = Data["Products"]["Name"];
var firstName = name.value(0);
name = new Field("Products", "Name");
name.setValue(0, "iPod");
Log(firstName);
The Tools.StopScript() function halts execution of the script. Take care when using this function.
The Document.Shake() function shakes the window from left to right (emphesises that incorrect data has been entered). Use sparingly!
The Document.MarkAsNeedingChanges() marks the window’s close button with a dot. When the window is closed or Xbase quit, the user will be prompted to save changes.
I finally got around to giving this blog a better theme. It replaces the old blue/black theme which I made in about 3 hours and wasn’t all that imaginative. There’s still a few visual bugs with the theme, I’ll sort those out as soon as I can.
Xbase 1.0.4 will be out in a couple of weeks. It concentrates on improving the scripting APIs. Nearly all the new features are implemented, it’s just the documentation and unit tests that need to be completed.
Xbase 1.0.3 is out! This version concentrates on the Script editor. Exporting has also been improved. Version 1.0.3 can be downloaded here.
Script Editor: Code Sense
1.0.3 includes context-sensitive Code Sense. This feature shows a list of suggestions based on the text before the cursor. For example, typing Data.S will show a list of methods belonging to the Data class, beginning with an S.

Code Sense
Script Editor: New Console
The Script Editor’s console has been vastly improved. Errors are now shown directly inside the console. Run sessions are now visually split up and include a timestamp.
Data Views: Record Switcher
The new record switcher provides a quick way to switch between records/rows in table data and form data views. It has buttons to select the First, Previous, Next and Last records. You can also go to a particular record by typing an row number in the text field.

Record Switcher
Form Design: Inspectors
The form design inspectors have been improved with the addition of keyboard shortcuts. Pressing ⌘1 will show/hide the attributes inspector, pressing ⌘2 will show/hide the data inspector, etc. Their appearance has also been slightly updated.

Form Inspectors
Exporting: Reports
It is now possible to export reports in one of five formats (.doc, .rtf, .txt, .odt, .html).
Exporting: Tables
Tables may now be exported has HTML files. The default doctype is XHTML 1.0 Strict but HTML 4 Transitional, HTML 4 Strict, XHTML 1.0 Transitional and XHTML 1.1 are also supported. The generated markup is fully valid HTML.
You may now specify a target DBMS when exporting as SQL. Supported distros are MySQL, PostgreSQL, MSSQL and SQLite.
Xbase 1.0.2 is out today.
Includes brand new syntax highlighting preferences for the script editor. You can now save and share styles, use bold/italic/underline, use hue change and invert colors (to get an instant dark theme).
There’s also a new find bar. It supports search as you type, regex search, search history and more.