Version 5.0 (currently in late-stage Beta, on the verge of "Release Candidate" stage) is a radical, total change of Brain Annex' internals! The user interface will remain relatively similar, but major new features are also being introduced.
NOTE : the included web app is now JUST ONE USE CASE of a much more general technology stack usable for a wide variety of purposes!
A TOTALLY DIFFERENT TECHNOLOGY STACK (diagram)
KEY TECHNOLOGY ELEMENTS
MAJOR DESIGN CHANGES (in the context of a relatively-similar UI)
New Additions & Bug Fixes (most recent at the top)
Note: a handful of features from the obsolete version 4 are still being ported over.
Final-stage Beta (with the exception of the NeoAccess
library, which is no longer in beta), approaching a "release candidate" stage as of Summer 2024.
In the repository, the version number is shown in the brainannex/__init__.py
file.
The NeoAccess library
is now independently distributed with its own repo , and can simply be pip installed from the standard PyPI distribution.
It is now treated as an external library requirement (to pip install) for the overall BrainAnnex web app.
The remaining BrainAnnex libraries can be pip installed as well (which automatically includes neoaccess) :
pip install brainannex
Date (MOST RECENT at the top) spaceraaaaaa |
New Additions & Bug Fixes (all "main" branch unless otherwise specified) |
"DEV" branch in-progress
Beta 48.2 |
NEW RELEASE IN PROGRESS. NOT RECOMMENDED TO USE, until this sign gets taken down.
MIGRATION PROTOCOL from past beta versions:
|
Sep. 14, 2024 Beta 47.1 |
NEW FEATURES
INFRASTRUCTURE
PYTHON LIBRARIES
BUGFIX
MATCH (n)
WHERE n.schema_code IS NOT NULL REMOVE n.schema_code
|
Sep. 5, 2024 Beta 46.4 |
NEW FEATURES
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
INFRASTRUCTURE
WEB-APP FRONT END
JavaScript LIBRARIES
WEB API
PYTHON LIBRARIES
BUGFIX
DOCUMENTATION
MIGRATION PROTOCOL from past beta versions: To make use of the new "recordsets" plugin, the database Schema needs to be expanded. The simplest method is to issue the following commands (e.g. from a python script or Jupyter notebook, assuming you have already done a from neoaccess import NeoAccess
from brainannex import NeoSchema from brainannex.PLUGINS.recordsets import Recordsets db = NeoAccess(host=host, credentials=("neo4j", password)) # CHANGE host and password! # Examples of host: bolt://123.456.789.012 OR neo4j://localhost # (don't include the port number) NeoSchema.set_database(db) Recordsets.initialize_schema()
|
Aug. 13, 2024 Beta 45 |
NEW FEATURES
INFRASTRUCTURE
JavaScript LIBRARIES
PYTHON LIBRARIES
MIGRATION PROTOCOL from past beta versions:
|
Aug. 9, 2024 Beta 44.1 |
NEW FEATURES
WEB API
BUGFIX
|
Aug. 7, 2024 Beta 44 |
NEW FEATURES
WEB-APP FRONT END
JavaScript LIBRARIES
WEB API
PYTHON LIBRARIES
|
July 30, 2024 Beta 43 |
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
WEB API
PYTHON LIBRARIES
BUGFIX
|
July 18, 2024 Beta 42 (note: 41 was not released) |
NEW FEATURES
DEPLOYMENT
PYTHON LIBRARIES
WEB API
WEB-APP FRONT END
DOCUMENTATION
|
July 9, 2024 Beta 40 |
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
INFRASTRUCTURE
PYTHON LIBRARIES
WEB API
WEB-APP FRONT END
BUGFIX
|
July 3, 2024 Beta 39.1 |
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
INFRASTRUCTURE
PYTHON LIBRARIES
DOCUMENTATION
BUGFIX
MIGRATION PROTOCOL from past beta versions:
MATCH (n:`User Login`) RETURN n.username, n.password
db = NeoAccess(host=YOUR_HOST, credentials=("neo4j", YOUR_DB_PASS), debug=False)
NeoSchema.set_database(db) UserManager.set_database(db) UserManager.create_user(username=SOME_NAME, password=SOME_PASS, admin=True) When you no longer need the old credentials in the database (created by the old storage mechanism), it's recommended that you delete them with the Cypher query: MATCH (n:`User Login`) DETACH DELETE n
Note that with this new beta release, the storage of credentials in the database is now in encrypted form, using a different node label ( |
May 17, 2024 Beta 38.3 |
BUGFIX
DOCUMENTATION
|
Apr. 30, 2024 Beta 38 |
NEW FEATURES
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
PYTHON LIBRARIES
WEB-APP FRONT END
VUE.js COMPONENTS
|
Mar. 24, 2024 Beta 37 |
NEW WEB-APP FEATURES
RE-IMPLEMENTED WEB-APP FEATURES PORTED FROM v. 4
PYTHON LIBRARIES
WEB API
WEB APP PAGES
VUE.js COMPONENTS
DOCUMENTATION
MIGRATION PROTOCOL from past beta versions: MATCH (n:Categories {uri:"1"}) SET n.root=true
The above database modification is necessary to phase out the obsolete old convention about root |
Feb. 12, 2024 Beta 36 |
NEW WEB-APP FEATURES
|
Jan. 27, 2024 Beta 35.1 |
RE-IMPLEMENTED WEB-APP FEATURES PORTED FROM v. 4
PYTHON LIBRARIES
WEB API
WEB APP PAGES
VUE.js COMPONENTS
PLUGINS
DOCUMENTATION
MIGRATION PROTOCOL from recent beta versions:
The above database modifications are necessary to conform existing Schema data to the changes made in the |
Jan. 13, 2024 Beta 34 |
RE-IMPLEMENTED WEB-APP FEATURES PORTED FROM v. 4
PYTHON LIBRARIES
WEB API
WEB APP PAGES
VUE.js COMPONENTS
PLUGINS
BUGFIX
DOCUMENTATION
|
Jan. 3, 2024 Beta 33 |
PYTHON LIBRARIES
PLUGINS
INFRASTRUCTURE
RECOMMENDED DATABASE CHANGES: Version 4.4 of Neo4j (the version currently supported by BrainAnnex) seems to have major problems with the recently-introduced database Index of type "TEXT". Use the old "BTREE" type of indexes only! 1. Run the following Cypher query to see what database indexes you have: SHOW INDEXES
2. If you have any indexes of type "TEXT", delete them with commands such as: DROP INDEX your_index_name (Replace your_index_name as appropriate!)
3. Create new indexes of the default type (which is "BTREE"). Of particular importance if indexing documents and notes: CREATE INDEX word_lookup_btree FOR (n:Word) ON (n.name)
|
Dec. 18, 2023 Beta 32 |
RE-IMPLEMENTED WEB APP FEATURES PORTED FROM v. 4
PYTHON LIBRARIES
INFRASTRUCTURE
MIGRATION PROTOCOL from recent beta versions: 1. Run the following Cypher query (if you have any Content Items; no harm in running it in any case): MATCH (n:BA) SET n.uri=toString(n.uri)
2. To verify that all the "uri" properties on data nodes now contain strings, run he following Cypher query: MATCH (n:BA)
RETURN apoc.meta.type(n.uri) LIMIT 30 You should see "STRING" |
Oct. 27, 2023 Beta 31 |
NEW WEB-APP FEATURES
LIBRARIES
INFRASTRUCTURE
DOCUMENTATION
MIGRATION PROTOCOL from recent beta versions: 1. Run the following Cypher query: MATCH (n) WHERE n.uri IS NOT NULL
RETURN count(n) It should return a count of zero. 2. Run the following Cypher update query: MATC (n) WHERE n.item_id IS NOT NULL
SET n.uri = n.item_id REMOVE n.item_id It will replace all occurrences of the property (i.e. field name) "item_id" to "uri" |
Sep. 27, 2023 Beta 30.1 |
NEW FEATURES
DOCUMENTATION
MIGRATION PROTOCOL from recent beta versions:
NeoAccess library (independently distributed): Sep. 21, 2023 v. 4.4.1 LIBRARY
When started in debug mode, NeoAccess prints out a message that "no Cypher query will actually be executed". That message is incorrect: the only effects of being in debug mode are extra messages being printed out. (If wanting to suppress the execution of Cypher queries, use the new "block_query_execution" mode.)
The method |
Sep. 14, 2023 Beta 29 |
NEW FEATURES
INFRASTRUCTURE
WEB API
LIBRARIES
DOCUMENTATION
BUGFIX
|
Sep. 2, 2023 Beta 28 |
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
NEW FEATURES
INFRASTRUCTURE
LIBRARIES
WEB API
DOCUMENTATION
MIGRATION PROTOCOL from recent beta versions:
|
Aug. 14, 2023 Beta 27.2 |
NEW FEATURES
INFRASTRUCTURE
LIBRARIES
DOCUMENTATION
|
Aug. 4, 2023 Beta 26.1 |
NEW FEATURES
INFRASTRUCTURE
LIBRARIES
DOCUMENTATION
BUGFIX
|
June 26, 2023 Beta 25.2 |
NEW FEATURES
INFRASTRUCTURE
LIBRARIES
DOCUMENTATION
BUGFIX
NeoAccess library (independently distributed): June 23, 2023 v. 4.3.1 LIBRARY
DOCUMENTATION
|
May 12, 2023 Beta 24 |
INFRASTRUCTURE
|
May 1, 2023 Beta 23.1 |
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
NeoAccess library (independently distributed): Apr. 29, 2023 v. 4.2.0
|
Apr. 27, 2023 Beta 22 |
LIBRARIES
BUGFIX
NeoAccess library (independently distributed from now on): Apr. 27, 2023 v. 4.1.0
|
Apr. 19, 2023 Beta 21 |
NEW FEATURES
LIBRARIES
BUGFIX
|
Apr. 12, 2023 Beta 20.2 |
LIBRARIES
DOCUMENTATION
|
Mar. 22, 2023 Beta 20.1 |
INFRASTRUCTURE
LIBRARIES
Major simplification in the structure passed as argument to indentify ("match") a node. This change also substantially reduces the potential for accidental "collisions in dummy names" of subclauses. The Increased consistency in method/argument names. In particular, phased out "neo_id" in favor of "internal_id", and "edge" in favor of "link" Fixed a few bugs, incl. in New method Changed argument defaults in Renamed Changes to Reorganized the New methods Additional unit testing
Tweak to
DOCUMENTATION
|
Most recent at the top:
Aug. 4, 2022 Beta 19 |
INFRASTRUCTURE
LIBRARIES
BUGFIX *
(*) see also bugfixes under individual libraries |
July 23, 2022 Beta 18.1 |
LIBRARIES
|
July 21, 2022 Beta 18 |
INFRASTRUCTURE
LIBRARIES
UX
BUGFIX *
(*) see also bugfixes under individual libraries |
June 28, 2022 Beta 17 |
NEW FEATURES
API
INFRASTRUCTURE
DEPLOYMENT
LIBRARIES
|
June 9, 2022 Beta 16.3 |
INFRASTRUCTURE
LIBRARIES
DOCUMENTATION
|
May 29, 2022 Beta 15.1 |
NEW FEATURES
INFRASTRUCTURE
LIBRARIES
DOCUMENTATION
|
May 19, 2022 Beta 14.1 |
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
CHANGES TO EXISTING FEATURES
LIBRARIES
INFRASTRUCTURE
|
Apr. 27, 2022 Beta 13 |
NEW FEATURES
CHANGES TO EXISTING FEATURES
LIBRARIES
INFRASTRUCTURE
|
Mar. 30, 2022 Beta 12 |
NEW FEATURES
UX
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
IMPROVEMENTS IN FEATURES PORTED FROM v. 4
INFRASTRUCTURE
"Notes" PLUGIN:
DOCUMENTATION
|
Mar. 25, 2022 Beta 11 |
NEW FEATURES "Notes" PLUGIN:
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
INFRASTRUCTURE
PLUGINS:
LIBRARIES
|
Mar. 2, 2022 Beta 10 |
NEW FEATURES
RE-IMPLEMENTED FEATURES PORTED FROM v. 4
API
LIBRARIES
DOCUMENTATION
BUGFIXES
|
Feb. 22, 2022 Beta 9 |
NEW FEATURES
UX
INFRASTRUCTURE
LIBRARIES
SECURITY
|
Feb. 16, 2022 Beta 8 |
RE-IMPLEMENTED FEATURES PORTED (and expanded) FROM v. 4:
UX:
INFRASTRUCTURE:
BUGFIXES:
|
Feb. 12, 2022 Beta 7 |
RE-IMPLEMENTED FEATURES PORTED FROM v. 4:
NEW FEATURES:
* Added option to hide sub-records when following links * URL's in record fields now shown smaller, and if very long they get truncated with ellipsis INFRASTRUCTURE:
UX:
|
Feb. 8, 2022 Beta 6 |
NEW FEATURES: * A viewer for linked records (i.e., following relationships from any record) INFRASTRUCTURE: * Completed the reorganization of Vue components, plus general cleanup |
Feb. 6, 2022 Beta 5 |
NEW FEATURES: * An in-place category filter in the category-navigation sidebar (an improvement over the whole-page downscrolls of v. 4) UX: * If a category-viewer page has no content and no subcategories, the page's global editing mode is turned on by default * Any new Category added to such a page, will now immediately appear in its category navigation * The add-content section at the bottom of the category-viewer page is now under the control of the page's global editing mode * Cleanup of the the Category Manager. In particular, the deletion of a Category now gives rise to an overlay to offer navigation to the Home category, or to any of the parents of the deleted category INFRASTRUCTURE: * The category-navigation sidebar converted from Flask to Vue, and turned into a Vue component * Start of reorganization of Vue components RE-IMPLEMENTED FEATURES PORTED FROM v. 4: * Implementation of a media file server, also handling the thumbnail images * The media folder can be kept anywhere in the file system * The category-navigation sidebar can now be collapsed, and also displays the subcategories and the parent categories. * Any "remarks" attached to a Category are now shown next to its name at the top of the category-viewer pages BUGFIXES: * Better handling of non-existent categories DOCUMENTATION: * Expansion of README file; in particular, more information on setting up and configuring Brain Annex |
Feb. 2, 2022 Beta 4 |
INFRASTRUCTURE: * Eliminated unnecessary multiple connections to Neo4j. Introduced a shared initialization module * Flask routing modules made more readable and modular by making use of Python Classes * Improved modularity of site-pages data (for site navigation) * Simplified and streamlined integration of Brain Annex into host sites * Cleanup and centralization of configurable parameters * Simplification to records editing LIBRARIES: * Expansion of NeoSchema and Categories API: * Several new API endpoints, primarily schema-related, and for supporting editing of relationships (links) among data nodes (data records) NEW FEATURES: * Early partial implementation of link editing in records BUGFIXES: * Restored functionality to the "Cancel" operation in record editing |
Dec. 23, 2021 Beta 3 |
RE-IMPLEMENTED FEATURE PORTED FROM v. 4: * Bread-crumbs navigation. New in v. 5: hovering over the Category names brings up the "remarks" field, if present. |
Dec. 18, 2021 Beta 2 |
DOCS: * Major expansion of README file, including detailed installation instructions, and the JSON file needed to initialize the Schema. LIBRARIES: * Expansion of NeoSchema and NeoAccess, to support exports of desired database portions as JSON files. * Switched to NeoAccess 3.1 FEATURES: * Implementation of export of Schema as JSON file. |
Dec. 12, 2021 Beta 1 |
Initial public release (Using the library NeoAccess 3.0) |
Nov. 2021 Beta 0 |
Early Beta phase, with the newly-added rearrangement/insertion within pages, and addition of new categories. Categories are now generalized (to Collections), and SiteLinks (website bookmarks) are more usable. |
Oct. 2021 Alpha (late) |
The Neo4j backend deployed to a virtual machine on the Google cloud. Expansion and better utilization of the new schema layer. Version 5 enters active daily use. |
Aug. 2021 Alpha (mid-stage) |
More substantial "re-constituting" of key parts from v. 4, as well as new capabilities, such as records management and use of a schema layer. |
July 2021 Alpha (early) |
Version 5 begins to take shape as a fully usable – though limited in functionality and plugins – implementation, with Neo4j, Python/Flask, and extensive use of Vue.js Porting of basic features from v. 4, as well as introducing all-new ones, such as JSON import/export. Joint development at GSK Pharmaceuticals of what will become the open-source library |
Late 2020 | Early work on the new version 5; in particular, development of Neo4jLiaison, a Neo4j-interface library that will eventually become NeoAccess |
VERSION 4 IS OBSOLETE AND NO LONGER DEVELOPED. More info
(MOST RECENT at the top)
4.8.1 (Oct. 1, 2021)
records
plugin
4.8 (June 19, 2020)
records
, in the context of bulk operations on the page4.7 (June 12, 2020)
lists
plugin got obsoleted. Existing "lists" were converted to "records", managed by the superior newer plugin records
audio
pluginpageViewer
class.sideBoxContentGenerator()
, formerly in siteInitialization.php, and createNavigationSideBar()
, formerly in categories.phpfetchPinnedCategories()
to class categories
pageBuilder
module (meant for eventual release to the pForce framework) into something more independent of Brain Annex. In particular, its JavaScript got migrated to core/core.js
4.6 (June 4, 2020)
lists
plugin - which had remained experimental - got deprecated, replaced by the new records
plugin, which provides all the functionality of the old lists, but with a superior editor, and a vastly more streamlined internal structure that makes use of the core-provided Triplestore (through its "Semantic" wrapper), rather than managing its own ad-hoc tables.records
plugin - both the display of its Content Items, and its editordocuments
and images
.pluginSupport
class to the specialized semantic
class (which is a wrapper around the basicTriples
class)viewer.php
to the file core/viewer.js
4.5 (May 24, 2020)
records
, designed to take over the earlier lists
plugin, with almost identical functionality, but built on top of the internal Triplestore rather than 3 ad-hoc relational database tableslists
editor, introduced in v. 4.4. This revised editor is also available for the new records
pluginpluginSupport
class to the specialized semantic
classbasicTriples.php
and semantic.php
; major revamp of the API to interface with the built-in Triplestore (basicTriples
) and the plugin-interfacing layer above it (semantic
)dbaseRestricted
viewer.php
got being migrated to the new file core/viewer.js
4.4 (May 14, 2020)
isInactive
predicate that grays out the content item when given a value of true
lists
editor, which used to be an early prototypeimages
and documents
) are now provided by the common contentManager
classnotes
object to a template file, a process standardized by several other plugins.contentManager
class (first introduced in v. 3.0) into its own file "contentManager.php"export
(in export.php) now factors out the bulk of the work involved in operations to export (download) Content Items
4.3 (May 3, 2020)
notes
plugin. When creating a new note, all controls now appear without requiring a page reload, thanks to an AJAX call to the standard notes
HTML generator (instead of a redundant, and incomplete, DOM modification by JavaScript.) When editing an existing note, or creating a new one, page scrolling now correctly goes to the top of the CKeditor area (after it has loaded); the URL in the browser no longer gets altered. The plugin stopped managing the notes' anchor points - a service now provided by viewer.phpimages
plugin now includes a link to a 3rd online diagram (SVG) editor: the open-source diagrams.net images
): updated the link to the changed home page of the online diagram editor "SVG edit"notes
): when editing an existing note or creating a new one, operations meant to happen upon completion of loading an instance of the CKeditor object, are now handled correctlyloggedOut.php
, viewer.php
, doAddContent.php
, categoryManager.php
, userRequestsHandler.php
, contentServer.php
, pluginPage.php
, etc.submitForms
module now makes use of the email
module, which made it more modular and also fixed a bugemail
and logging
modules
4.2 (February 9, 2020)
basicTriples
, to allow for storage of attributes for relationship (property), in the spirit of RDF* (for example, Blazegraph) and of graph databases (such as Neo4j). A new field added to the core_triples
table, and a new table, core_relationship_attributes
, added to the databasebasicTriples
from making use of the database API dbaseRestricted
to the more fundamental dbasePDO
getTripleByID()
to the class basicTriples
basicTriples
Triplestore, away from the general pluginSupport
class, and into a new semantic
class (stored in semantic.php
)semantic
class added server-logging support, and is beginning to enforce restrictions to prevent plugins from altering Triplestore records that they have no authority on - akin to what the dbaseRestricted
class has long done to insulate the relational database operations of the various pluginspluginManager
class now instantiates a separate semantic
object for each plugin type, and those objects are being made available to their corresponding plugin objects (just like what has been done with he dbaseRestricted
class)pluginManager
classdocument
plugin is the first one to start using the new semantic
objects, for deletion of document metadata (and to return more detailed error messages to the AJAX calls)viewer.php
gives more detailed error messages for the deletion of Content Item metadata, and was switched over to the "ajax" mode for calls to the web service userRequestsHandler.php
4.1 (December 9, 2019)
formLetters
pluginHandler.php
in favor of the new userRequestsHandler.php
pluginPage.php
(used to display plugin-generated pages, embedded within the scaffold of a standard hosting page); in particular, a standard set of arguments are now routinely passed to the invoked plugin methodssiteModules/siteFunctions.php
and siteModules/upload/upload.php
4.0 (October 14, 2019)
membership
class (which is specific to Brain Annex) got taken out into a new, more generic siteMembership
class (applicable to any site with general user memberships)siteLinks
(bookmarks) plugin, characters such as "&" in the comments or other fields no longer cause a field truncation during addition of new records (editing of existing records was not affected)(MORE RECENT at the top)
3.10 (August 20, 2019)
images
plugin is now a Single-Page operation (as has been the case for the documents
plugin since version 3.9)contentManager
class of the core modulefetch
API (stored in core/core.js
) . Started migrating to the new API server calls that used to be handled by JavaScript functions directly using XMLHttpRequestcontactServerGET_NEW
function, inside core/core.js
, now always invokes a handler function upon the completion of the asynchronous XMLHttpRequest call (even in cases of failure), and passes a 3rd argument to it, with the error statususerRequestsHandler.php
(based on the old pluginHandler.php
that it supersedes.) Absorbed the old doMove.php
pluginManager
class more robust against failuresevaluateTemplate
method of the templateEvaluator
class, after all template substitutions are done, now eliminates any non-substituted tokens still lingering in the template. [This is aligned with how the Jinja templating works in the Flask microframework.]3.9 (July 15, 2019)
documents
plugin is now a Single-Page operation (i.e. no page reloads)clock
plugin now includes a "Move to Position" (within the Category page) control, just like Content Items for most other pluginscore_triples
, first introduced in version 3.3 to implement a simple Triplestore-style semantic databasecontentManager
class, into the own class basicTriples
, placed in the file siteModules/basicTriples/basicTriples.php
updateTripleByID
(), and also made them available through the class pluginSupport
pluginManager
to the class contentManager
, which is beginning to assume the "core" class roleID
field to the core_triples
MySQL tables used to implement a TriplestorecontrolLinks_PageRelated
method of the pluginSupport
class now has an extra optional argument, a flag to exclude the control for the "single-item view" (typically not useful in widgets)editItemTags
JavaScript function got generalized into a createDialogBox
function that will also provide support for editing other metadata attributes (besides the tags)cookies
module, added a few static methodscookies
module, marking the beginning of Brain Annex' promised release to open source. GitHub repository3.8 (June 16, 2019)
doDeleteItem
in viewer.php
)pluginSupport
has a new method templateReplacementArray
that takes care of defining all the HTML template replacements for the standard Content-Item controls.pluginHandler.php
now takes cares of all aspects of the XMLHttpRequest calls (when invoked in "ajax" mode), relieving responsibility from the plugin methods that it dispatches to.checkForError
from viewer.php
to the new file core/core.js
that was introduced in version 3.73.7 (Apr. 30, 2019)
siteLink
items, and loading the tag editornotes
Items from viewer.php
(for historical reasons) to plugins/notes/notes.css
pluginHandler.php
script, to fine-tune its output to the needs of the caller pageviewer.php
to the new core/core.js
filedbasePDO
more robust against connection timeouts (e.g. under heavy load) to the MySQL server, in the creation of new database PDO connectionsselectSQLFirstRecord()
in the common module dbasePDO
now provides a way to distinguish zero records located from a database failure (such as a timeout)viewer.php
userMessages
on the pageBuilder
moduleCKeditor
siteAuth
common module: in case of a database failure (for example from a timeout) during the verification of user credentials, the user no longer gets logged outsocial
3.6 (Apr. 18, 2019)
siteLinks
plugin) no longer produces a page reloadheaders
plugin) no longer produces a page reloadviewer.php
, added support for reload-free addition of new Content Items for plugins that don't require parameters (JavaScript funtion addImmediateItem
)pluginHandler.php
to methods in the various pluginspluginHandler.php
formBuilder
lists
plugin : eliminated a sporadic false alarm, and added more consistency checks3.5 (Mar. 1, 2019)
siteLinks
, added a new field read?
, to optionally store notes about whether/the extent to which the web page was read/processedARC2
(open-source PHP library for working with RDF)dbasePDO
moduledbasePDO
module3.4 (Dec. 24, 2018)
siteAuth
, and letting the class membership
handle it. That has the result of separating the site-authorization module (which is very general for logins and login verification) from the membership module (which is site-specific to BrainAnnex.)email
library into a static class.membership
class.)3.3.2 (Nov. 29, 2018)
3.3.1 (Nov. 20, 2018)
3.3 (Nov. 17, 2018)
images
plugin can now resize PNG file types as well, including transparent backgrounds (JPG resizing was introduced in version 2.4)images
plugin. It provides a user interface to edit the desired resized formats for uploaded images (first introduced in version 2.4 and expanded in version 3.0)images
class (i.e. the main class for the "images" plugin), is now handled by an independent module, providing the imageResize
class
3.2 (Nov. 9, 2018)
lists
plugin (first introduced in 3.0). In particular, UI improvements, and a new abstraction layer that makes lists
more independent from their underlying implementation. Fixed bug involved in new-account creation.notes
plugin switched from using TEXT to using MEDIUMTEXT for the MySQL data type for the bodies of the notes. That increases the max length of a note from ~64KB to ~16MBtableFramework
module now accepts associative arrays, instead of PDO result datasets, as an optional way to specify a table's datatableFramework
module now correctly detects if the caller function was providing its own datasetuserTables
plugin
3.1 (Sep. 7, 2018)
lists
plugin (first introduced in 3.0). In particular, UI support for creating a new listheaders
plugin, for inserting "headers" (separators) on category-viewer pagesnotes
as "inactive" (they will show up in a light gray)3.0.1 (June 20, 2018)
3.0 (June 14, 2018)
lists
plugin, to create and manage individually-addressable "table records", each of which may contain literals (text, numbers, etc) or Content Items from various plugins (for example, photos or documents or even other lists.)images
plugin, expanded the implementation of multiple resized formats for uploaded images (first introduced in version 2.4): now, an arbitrary set of resized formats can be requested through the table formats
, which permits specifying the size of either width, height, long side or narrow sidetableFramework
module, non-editable fields are now compatible with specifying default values for fieldscontentManager
class from the Core moduletableFramework
module, attempting to generate a table in EDIT mode without specifying the key fields, now generates an error message if the default field name "ID" is not present in the table. Also, misc. code cleanup, and improvements in error catching and reporting(MORE RECENT at the top)
2.4.3 (3/27/2018)
siteLinks
, added controls to move items up and down in the page ordersiteLinks
, changed the table sort for same-priority site links, to order to utilize their page ordersiteLinks
, replaced text controls with image iconstableGenerator
class in the tableFramework
module, to allow users to request SQL computed fields that aren't actually shown in the table (typically to provide sorting fields)images
plugin, affecting the creation of a "resized" subfolder in new accounts2.4.2 (3/17/2018)
document
objects, to perform downloads2.4.1 (3/12/2018)
images
objects, to perform downloads2.4 (3/10/2018)
pluginManager
available to the membership
module, and transferred some responsabilites to the pluginManager
membership
module affecting addition of new accountsimages
plugin, implementation of multiple resized formats for uploaded images (for now, just a thumbnail version for jpg's)documents
plugin now uses the file name (minus suffix) as default captionnotes
plugin - and thouroughly documented the process as a "case study"2.3 (2/11/2018)
userTables
pluginmembership
class, to also deal with initializing the permissions
class2.2 (12/14/2017)
2.1 (11/30/2017)
2.0 (9/29/2017)
uploader
zipstream
addControl_Password()
(MORE RECENT at the top)
1.10 (9/3/2017)
userData
directory)documents
) switched over to use dbaseRestricted
, and in particular to make use of account-dependent tablesdbaseRestricted
, meant for the plugins; it handles table-name translation, and also limits the database operationsreorderObjects.php
appendToUserTable_service
1.9 (12/24/2016)
1.8 (10/27/2016)
/common/
directory1.7 (5/31/2016)
notes
plugin1.6 (3/3/2016)
1.5 (early/mid Feb. 2016)
1.4 (mid/late Jan. 2016)
1.3 (early Jan. 2016)
1.2 (mid Nov. 2015)
1.1 (9/24/2015)
1.0 (6/4/2015)
PROJECT STARTED AROUND June 2015 Note: several modules that became part of Brain Annex had been developed years before, for other projects. In particular, modules for general page display, user login, HTML table display/editing, and category representation/management. Many of those general modules eventually got repackaged into a new, separate PHP Web Framework named "pForce" (which got released to Open Source.)
In 2021, the technology stack got completely overhauled, as the project was re-born as "version 5". More info