Skip to content

Latest commit

 

History

History
2247 lines (1817 loc) · 92.2 KB

CHANGELOG.md

File metadata and controls

2247 lines (1817 loc) · 92.2 KB

It does not matter how slowly you go as long as you do not stop. -- Confucius

First they ignore you, then they laugh at you, then they fight you, then you win. –- Mahatma Gandhi

Unreleased (0.19.0)

Important changes

Fixed XSS flaw in tags_helper

Credit Antonin Steinhauser (asteinhauser) for discovery and responsible disclosure.

Devise replaces Authlogic for user authentication

Ticket #742 replaces Authlogic with the latest Devise (4.3.0) which has wider adoption. This change requires a database migration on the User model. Please note:

  • Most User fields are renamed and can hence be rolled back. Existing Authlogic passwords will continue to work.
  • Users will be forced logged out. Existing user sessions will not be kept and the fields persistence_token, single_access_token, perishable_token will be dropped from the database.
  • Though the migration is generally safe we recommend to make a backup of your database before migrating.

Existing OAuth broken

The Devise change will break any OAuth login plugins which depend on Authlogic. You can configure OAuth for Devise using the guides here.

Login and user-related routes changed

The login URL routes have been changed to use the defaults of Devise.

User mailers changed

Mailers related to user password reset, etc. are changed to use the defaults of Devise.

PaperClip version updated from 5.2.1 to 6.0.0

PaperClip now only depends on aws-sdk-s3 instead of aws-sdk. For more info see thoughtbot/paperclip#2481. Replace the Cocaine gem with Terrapin. https://github.com/thoughtbot/terrapin/ Apart from the namespace change, this is a drop in replacement.

Rails 5.2

The underlying framework is now rails 5.2.*

Ruby 2.4 deprecated

Ruby 2.4 has reached end of life and is no longer activity tested against.

Other changes

  • #794 Fix defect with unpermitted params in advanced search
  • 2bc6184779a26070496e6f4caefa0cc9ba555d7b Remove broken support for delete links on arrays.
  • #851 upgrade paper_trail
  • Security fixes CVE-2019-16109, CVE-2019-16676, CVE-2019-5477, CVE-2019-16892
  • Dependency updates

Sat Apr 21, 2018 (0.18.0)

Important changes

Minimum Ruby version

#665 Support for Ruby 2.3 has been dropped, with test coverage for 2.4 and 2.5 enabled.

Swap to FactoryBot

If you consume fat free crm as an engine and re-use any factories, you'll need to upgrade to FactoryBot.

Removed methods

Lead.update_with_permissions is removed, use user_ids and group_ids inside attributes instead and call lead.update_with_account_and_lead_counters FatFreeCRM::Permissions.save_with_permissions is removed, use user_ids and group_ids inside attributes and call save FatFreeCRM::Permissions.update_with_permissions is removed, use user_ids and group_ids inside attributes and call update_attributes

Other changes

  • CVE-2018-8048 (loofah gem)
  • CVE-2018-3741 (rails-html-sanitizer gem)
  • #768 Fix comment creation on entities
  • #762 #764 Fix bug in select menu
  • #759 Improve zero revenue display
  • #753 Opportunities sort by weighted amount
  • #749 Fix unsafe reflection and mass assignment

Wed Jan 24, 2018 (0.17.2)

  • CVE-2017-0889
  • #724 Fixes #589 Autocomplete regression
  • #723 Fixes #687 Passing string to define a callback is not supported.

Wed Jan 24, 2018 (0.16.3)

CVE-2017-0889

Wed Jan 24, 2018 (0.15.1)

CVE-2017-0889

Wed Jan 24, 2018 (0.14.1)

CVE-2017-0889

Sat Jan 20, 2018 (0.17.1)

  • #709 Revert accidental minimum ruby version 2.4 changes (#665)
  • Fix #687 Passing string to define a callback is not supported.

Mon Jan 22, 2018 (0.16.2)

Fix #687

Sat Jan 20, 2018 (0.17.0)

Important changes

Select2 for select boxes

This release replaces Chozen with Select2 consistently across the app. This may break plugins which rely on Chozen. To fix any issues please migrate to Select2 or add Chozen to your plugins.

Counter caches

To improve performance, a number of counter caches have been added.

Users with large amounts of records may find certain database migrations taking a large amount of time, as each record is cached upfront.

Minimum ruby version is now Ruby 2.3

See #647 #654 Adopt min ruby version of 2.3.0 and apply safe navigiation rubocop rules

Other changes

  • #691 Wording

  • #688 Preparation for Devise

  • #686 Bundle update

  • #683 Rubocop: Refactoring

  • #680 Alternative build setup

  • #682 Rubocop: Hashrockets

  • #693 Update Japanese translations

  • #697 Minor security improvements

  • #703 #696 Replace Chozen with select2

  • #678 Find an account by name when name is in params (fixes #397)

  • #673 Improve JS escaping

  • #671 Devise Readiness (+ thread-safety): Refactor User.my scope

  • #670 Fix #563 invalid default custom field minlength

  • #668 Rubocop fixes for xls/rss builder classes

  • #667 Rubocop: Autocorrect various assignment-if statements, case statements, etc.

  • #666 Various rubocop corrected items

  • #661 Bundle Update on 2018-01-06

  • #655 Upgrade rubocop

  • #658 Upgrade Bootsnap gem, fixing an issue with windows

Sat Jan 6, 2018 (0.16.1)

  • #653 Fix regression with emails

Fri Jan 5, 2018 (0.16.0)

  • #633 Upgrade to rails 5.1.0
  • #641 Swap default server from thin/unicorn to puma
  • #631 Clean up locale files
  • #612 DEPRECATION WARNING: #table_exists? currently checks both tables and views

Thu Dec 14, 2017 (0.15.0)

This release upgrades to rails 5.0.0.

Be aware of rails/sprockets#426 if you were using FFCRM as an engine.

  • #500 - Upgrade rails
  • #554 - Upgrade authlogic
  • #614 - Rails5 warnings
  • #643 Use FixtureSet instead of Fixtures module
  • #642 Cleanup: Use Ruby style guide syntax for arrays
  • #640 Speed up builds with Bootsnap
  • #639 Code cleanup: Remove block-end comments (extracted from Rubocop PR)
  • #637 Replace render :text with render :plain (Rails 5.1 prep)
  • #636 Upgrade Migrations (preparation for Rails 5.1)
  • #635 Fix alias_method_chain via @johnnyshields
  • #632 Fix Travis CI chrome runs; Travis now requiring Chrome as an addon
  • #628 Security Update on 2017-11-29
  • #626 Use headless Chrome browser for feature testing
  • #623 Fix license Rake task
  • #617 Bundle Update on 2017-07-19

Thu Feb 23, 2017 (0.15.0-beta.2)

This release is aimed at minor updates and ruby 2.4 compatability via the relevant rails updates.

Other improvements include:

  • #480 Improve select2 behaviour

Wed, Dec 7, 2016 (0.15.0-beta)

This release is aimed at getting as many dependencies as possible up to date without significant refactoring.

Mon, Dec 5, 2016 (0.14.0)

  • Various security fixes
  • Enable CORS headers
  • Ruby 2.0 or less dropped from CI

0.13.6 - February 12, 2015

  • Fixes #413 and #414 - bold tag being escaped on user profile.
  • Fix for CVE-2015-1585 - CSRF vulnerability.

Full list: https://github.com/fatfreecrm/fat_free_crm/compare/v0.13.5...v0.13.6

0.13.5 - January 22, 2015

  • Update gems
  • Fixed #337 Added index on Versions created_at
  • [Security] Team section should not display opportunities current user is not allowed to see...
  • Update to rails 3.2.20
  • Fixed issue #347
  • Fixed issue #349
  • Fixed #351 - missing interpolation argument.
  • Fixed #353 - observes is a prototype function that is no longer used.
  • Fixed #283 - email max length is 254 according to IETF
  • Fix avatar issue in recent_activity
  • Merge pull request #354
  • Fixed custom field handling of html entities.
  • Merge pull request #355
  • Fixed issue #374 - global lists missing from UK translation file.
  • Fix #356 - default SMTP session should have no auth

Full list: https://github.com/fatfreecrm/fat_free_crm/compare/v0.13.4...v0.13.5

0.13.4 - September 4, 2014

  • Fixed XSS vulnerability in helper method.
  • Use rails_autolink gem which contains updated XSS fixes.
  • Fixed XSS vulnerability if email data is manipulated.

Full list: https://github.com/fatfreecrm/fat_free_crm/compare/v0.13.3...v0.13.4

0.13.3 - August 26, 2014

  • Fixed bug where starts_on was being used instead of ends_on. a0f69d7
  • fixes bug with toggling select/create account when converting lead 7c76b9c
  • Russian locale fixes.
  • Add entity_observer to list of observers when running as an engine.
  • Allow notification emails to be sent from a particular address. Many
  • Convert tag select box to Select2. We're deprecating Chosen
  • Enable fallback translations.
  • Fixed 'end of week' spec in tasks using Timecop.
  • Fixed bug with recent items box replacement.
  • #311 - problem with Thor being reference before it is loa
  • Fixed some bugs related to sorting custom fields.
  • #334 Added byebug for ruby2+. 5dca0ba
  • Update rails
  • Update gems
  • removes prototype-rails dependency
  • replaces prototype with jquery

Full list: https://github.com/fatfreecrm/fat_free_crm/compare/v0.13.2...v0.13.3

0.13.2 - January 9, 2014

  • Fixed issue with secret token not being saved if DB does not exist.

0.13.1 - January 7, 2014

  • Lock down routes.
  • Remove stub hook
  • Remove unneccessary function
  • Don't spam gmail by default
  • consider_all_requests_local should be off by default in production mode
  • Remove pysch by default (optimise for ruby 2 now)
  • Fixed regular expression logic to be more sensitive to newline attacks.
  • users_controller requires security on its actions.
  • Send emails to file in development mode
  • Don't show user list if not logged in.
  • Remove old 'rake acceptance' task 2d4411a
  • Refactored secret token generation code
  • Hide password related attributes from the logs.
  • File syntax layout tweak.
  • Escape autocomplete output safely.
  • Locked down available views in Task.
  • sanitize list.url
  • Don't generate secret token in test mode.
  • Don't raise secret token generation error during tests.

Full list https://github.com/fatfreecrm/fat_free_crm/compare/v0.13.0...v0.13.1

Fri Dec 27, 2013 (0.13.0)

  • Add user_id to lists table
  • Add campaign to opportunity advanced search.
  • Add id to export formats.
  • Added ActiveSupport lazy load hooks for all models in Fat Free CRM.
  • Added timeago library to enable future caching of search results.
  • Atom and RSS feeds now deal with cases where user doesn't exist.
  • Better solution to internationalizing jquery.timeago plugin.
  • Configurationise the uniqueness constraint for account first names
  • Convert settings from syck to psych and remove dependency on Syck.
  • Enforce available locales in latest version of I18n.
  • German translations
  • Introducing client-side unobtrusive javascript for new comments.
  • Peg paper_trail to v2.7
  • Replaces rjs with erb/haml
  • Updated to latest rails version

Bug fixes

  • Ensure user isn't deleted if they still have tasks.
  • Fix delete button not showing
  • Fix global list save problem
  • Closes #268: Replace the contents of "div#leads_pagination"
  • #242 and #245. Fix cohsen_select helper to be able to
  • Fixed issue #282
  • Fixed issue with account categories inclusion matcher.
  • Fixed issue with timeago plugin not precompiling. Resolves issue #286
  • Fixed issue#281 - psych v2 is not supported.
  • Fixed one_submit_only js format and fixed red background highlight
  • Fixed uninitialized constant 'Version' error on dashboard ATOM/RSS
  • #270. Fixed procfile command for heroku.
  • #273 from notentered/testFixes
  • #279 from roadt/bugfix
  • #284 from roadt/bugfix
  • #287 from szetobo/fix_test_case
  • #288 from szetobo/update_scope
  • rake ffcrm:setup no longer nukes the database before starting.

Full changes: https://github.com/fatfreecrm/fat_free_crm/compare/v0.12.3...v0.13.0

0.12.3 - January 9, 2014

No changes

0.12.2 - January 7, 2014

  • users_controller requires security on its actions.
  • Refactored secret token generation code to generate and persist a secret token in the DB if one doesn't exist
  • Don't show user list if not logged in.
  • Hide password related attributes from the logs.
  • consider_all_requests_local should be off by default in production mode
  • Fixed issue with secret token not being saved if DB does not exist.

0.12.1 - December 27, 2013

  • Strengthen case to generate unique secret token.
  • Ensure requests are protected.
  • Add custom serializers for xml and json.
  • Fixed sql injection in timeline method.
  • Refactor activity_user to remove possible SQL injection points.
  • Update gems to compile through

Fri, Jun 28, 2013 (0.12.0)

  • Ruby 1.9 support only (no ruby 1.8 and not yet ruby 2)
  • Fixed version pagination bug thanks to reubenjs
  • Can set default stage for opportunities
  • First name can now be optional on leads, contacts and accounts (if desired)
  • Number of search results is now displayed
  • Fixed pagination ordering when displaying entities that belong to a master entity (e.g. opportunities inside a contact)
  • Fixed tests
  • Fixed avatar upload bug (by updating paperclip gem)
  • Can now search for campaigns in opportunities advanced search
  • Added ActiveSupport lazy load hooks for cleaner plugin integration
  • Fixed bug where MS Smartquotes broke the dropbox (Thanks bitgangsta)
  • Updated German translations (thanks Phillip Ullmann)
  • Display relationship between contact and it's corresponding lead in the sidebar (thanks Phillip Ullmann)

Tue, Mar 16, 2013

  • Changed Fat Free CRM license to MIT, see MIT-LICENSE file.

Sat, Dec 29, 2012 (0.11.4)

  • Updated countries list
  • Please see an important fix for country data: https://github.com/fatfreecrm/fat_free_crm/wiki/The-Countries-Problem-and-How-to-Fix-It
  • 0.11.4 will be the last ruby 1.8 release
  • Comments can be added when items are created
  • Dashboard shows assigned accounts and opportunities
  • Now uses Rails 3.2
  • Added Group tab in admin section
  • Added jQuery datepicker
  • Custom fields are now included in XLS export
  • Updated Chinese translations
  • Added Ransack / RansackUI search
  • Added a Team tab to the interface
  • Added ability to add new item views via plugins

Wed, May 9, 2012 (0.11.2)

  • Better html email parsing
  • Users can subscribe to contacts/accounts etc
  • Use CanCan for permissions
  • Add jQuery UI
  • German translation updates

Fri, Mar 30, 2012 (0.11.1)

  • Added Travis continuous integration service
  • Rails 3 compatibility
  • Added a few view hooks
  • Dropbox now understands alt_email
  • Updated translation file format
  • Export includes full_name where applicable
  • CSS bug fixes
  • Swedish & Italian translations
  • Controllers respond to JSON requests
  • Several hundred other commits...

Tue, Sep 7, 2010

  • Added Gemfile and Gemfile.lock.
  • Installed plugins.
  • Merged with crossroads/rails3 fork; (runs 'rake crm:setup').

Mon, Sep 6, 2010

  • Generated empty Rails3 project.

Tue, Aug 31, 2010

  • Release 0.10.1.
  • Updated CHANGELOG and CONTRIBUTORS files.

Sun, Aug 29, 2010

  • Added clickable labels to tasks sidebar checkboxes.

Thu, Aug 26, 2010

  • Added missing Polish translations (thanks, Kamil!)

Fri, Aug 20, 2010

  • Fixed deprecation warnings about plugins/**/tasks (thanks, Nathan!)
  • Fixed Rails Engines deprecation warnings (thanks, Nathan!)
  • [rake crm:setup] command now also runs plugin migrations (thanks, Nathan!)

Thu, Aug 19, 2010

  • Checkboxes now have clickable labels (thanks, Steve!)
  • Load 'awesome_print' gem (if available) in development mode (thanks, Nathan!)

Wed, Aug 18, 2010

  • Added 'javascript_includes' hook (thanks, Nathan!)

Tue, Aug 17, 2010

  • Properly set the account value when attaching a contact to the account (closed LH #165)
  • Fixed failing dropbox specs by rescuing proper exception (Rails 2.3.8).
  • Added PrependEngineViews library module to let Fat Free CRM plugins override default views.

Mon, Aug 16, 2010

  • Minor UI tweaks.

Sat, Aug 14, 2010

  • Added view hooks after top section (thanks, Ben!)
  • Fixed default access for objects created by dropbox (thanks, Steve!)

Fri, Aug 13, 2010

  • Stopped emails being associated with Campaigns that don't exist (thanks, Steve!)
  • Fixed plugins tab initialization when the 'settings' table had not been created yet (thanks, Nathan!)

Thu, Aug 12, 2010

  • Fixed activerecord deprecation warnings (thanks, Nathan!)
  • Fixed factory generator for email (thanks, Nathan!)

Tue, Aug 10, 2010

  • Added rules to .gitignore to ignore any plugins starting with crm_* (thanks, Nathan!)

Mon, Aug 9, 2010

  • Display absolute dates in addition to relative ones (thanks, Peter!)
  • Add absolute dates and fix relative dates for campaigns (thanks, Peter!)

Sat, Aug 7, 2010

  • Make sure Task selection popup doesn't affect Quick Find.
  • Close asset selection popup on .
  • Finished refactoring to move #attach logic from application controller to models.

Fri, Aug 6, 2010

  • Germal translation fixes (thanks, Ralf!)
  • Removed Rails deprecation warnings (thanks, Ralf!)

Thu, Aug 5, 2010

  • Fat Free CRM by default requires Rails 2.3.8.
  • Bundled will_paginate and faker as vendor/gems.

Wed, Aug 4, 2010

  • Made dropbox email address comparision was case-insensitve (thanks, Ralf!)
  • Removed duplicate association Opportunity#account (was: has_one + belongs_to) (thanks, Ralf!)
  • Multiple fixes for Rails 2.3.8 upgrade (thanks, Ralf!)

Tue, Aug 3, 2010

  • Don't auto-complete user create/edit forms (thanks, Alexander!)
  • Multiple fixes in Germal translation (thanks, Ralf!)

Fri, Jul 30, 2010

  • If a contact has no name, fill in the account name instead (thanks, Peter!)

Wed, Jul 28, 2010

  • Sort contacts by last name by default (thanks, Peter!)

Tue, Jul 27, 2010

  • Fixed named scope condition syntax in the Opportunity model (thanks, Elad!)
  • Refactored to move #attach logic from application controller to models.

Mon, Jul 12, 2010

  • Refactored to move #discard logic from application controller to models.

Thu, Jul 7, 2010

  • Added controller#attach specs.
  • Added more comprehensive controller#discard specs.

Wed, Jul 7, 2010

  • Allow searching by email for Accounts, Contacts, and Leads.
  • Added #discard controller specs.

Sun, Jul 4, 2010

  • Allow explicit controller name when refreshing sidebar.
  • Handle #discard requests the same way #attach are handled (i.e. in parent object controller).

Fri, Jul 2, 2010

  • Moved common #attach handler to application controller.
  • Strike through completed tasks in the auto_complete list.
  • Implemented #discard for tasks.
  • Implemented selecting and attaching tasks.
  • Allow auto_complete for tasks.
  • Implemented #attach for Opportunities and #attach/#discard for Contacts.
  • Added #attach routes to handle requests to attach existing assets to related item.

Mon, Jun 12, 2010

  • Use default permissions when creating an account from within a contact (thanks, Matthiew!)
  • Removed 'Custom' opportunity stage and replaced it with comment in config/settings.yml.
  • Named scope fix for Postgres/Heroku (closes LH #213).

Wed, Jun 7, 2010

  • pt-BR updates (thanks, Enderson!)

Thu, Jun 17, 2010

  • Don't count lost opportunities towards Account total (closes LH #205).
  • Fixed vertical offset of asset selection popup.
  • Made multiple selection popups coexist on a single page.

Fri, Jun 11, 2010

  • Fixed issue with linking to edit/delete for models with multipart names (thanks, Nicholas!)

Tue, Jun 8, 2010

  • Added load_select_popups_for() helper on asset landing pages.
  • Refactored to add sections with [Create/Select...] on landing pages.

Fri, Jun 4, 2010

  • Initial prototype of seleting related asset from the asset's landing page.
  • Added discard action related specs.

Fri, May 28, 2010

  • Do not offer :converted status choice when creating new lead (closes LH #199).

Thu, May 27, 2010

  • Added simplified Chinese translation (thanks, James Zhang!)
  • Initial implementation of discarding attached opportunity.

Tue, May 25, 2010

  • Final dropbox touches before merging it all to the master branch.
  • Avoid collision with .email CSS class which is used to display Task category strip.
  • Dropbox related localizations.

Mon, May 24, 2010

  • More work on the dropbox library.

Mon, May 10, 2010

  • Allow to detach an account when editing a contact or an opportunity (closes LH #184).

Wed, May 5, 2010

  • Added migration to have index on permissions (thanks, Yura!)
  • Added link_to_email to Bcc: to dropbox if it has been set up (closes LH #183).

Mon, May 3, 2010

  • Pushed [rails3] branch to Github, let the porting start :-)

Thu, Apr 29, 2010

  • Replaced Facebox with Modalbox (closes LH #170).

Tue, Mar 9, 2010

  • Check if new [background_info] setting is properly loaded.
  • Merged in dropdown calendar localization patches (thanks, Yura!)
  • Updated list of contributors.
  • Version 0.9.10

Fri, Feb 26, 2010

  • More work on to support scheduling tasks with specific time deadline.

Thu, Feb 25, 2010

  • Refactored compound address code to support field hints.
  • Added French locale (thanks, Cédric!)

Wed, Feb 24, 2010

  • Added new hook hook in user profile template (thanks, Jose Luis!)

Sun, Feb 21, 2010

  • Added :background_info option to Settings making it optional
  • Refactored background info in forms and sidebar views
  • Fixed fixtures and factories for the new Address model

Fri, Feb 19, 2010

  • Added support for creating tasks with specific time deadline (thanks, Yura!)

Wed, Feb 17, 2010

  • Added support for compound addresses (thanks, Jose Luis!)
  • Fixed for :quote_ident issue with Postgres (thanks, Matt!)
  • Added missing translations to the rest of locale files.

Tue, Feb 16, 2010

  • Added localization support for dropdown calendar (thanks, Yura!)

Wed, Feb 10, 2010

  • Added background info field to all major models (thanks, Jose Luis!)
  • Added hook to sidebar index template (thanks, Jose Luis!)

Tue, Feb 9, 2010

  • Default permissions are now configurable in settings.yml (thanks, Jose Luis!)
  • More localization tweaks for date formats and tasks (thanks, Kamil and Yura!)
  • Minor refactoring.

Sun, Feb 7, 2010

  • Updated Russian locale files (thanks, Roman!)
  • Updated task editing to support localization (thanks, Yura!)
  • Added email attribute to Accounts -- run rake db:migrate (thanks, Jose Luis!)
  • Updated README to mention http://demo.fatfreecrm.com

Thu, Feb 4, 2010

  • Fixed few i18n omissions in locale files.
  • Added support for editing and deleting notes (thanks, Jose Luis!)

Tue, Feb 2, 2010

  • Added Polish translation (thanks, Kamil!)

Wed, Jan 27, 2010

  • Fixed task time zone specs (thanks, Tom!)

Mon, Jan 25, 2010

  • Small tweak to better support Heroku deployments (thanks, Ryan!)

Tue, Jan 19, 2010

  • Updated Russian translation (thanks, Roman!)

Tue, Jan 12, 2010

  • Pulled remaining English strings out of JavaScript (thanks, Gavin!)
  • Added missing message to locale files.

Mon, Jan 11, 2010

  • Added Spanish translation (thanks, Beatriz!)
  • Fixed text encoding issues with Ruby 1.9/MySQL and HAML (thanks, Gavin!)

Wed, Jan 7, 2010

  • Added :per_user_locale setting (default is false).
  • Added some CSS eye candy (drop shadows and options links).
  • Version 0.9.9b

Wed, Jan 6, 2010

  • Updated Thai and Portuguese language translations.

Mon, Jan 4, 2010

  • Implemented REST API for fetching asset notes (thanks, Adrian!)

Sun, Jan 3, 2010

  • Return stringified hook data when called from within templates, and the actual data otherwise.

Thu, Dec 31, 2009

  • Version 0.9.9a -- Happy New Year!
  • Added [rake crm:settings:show] task.
  • Minor fixes.

Wed, Dec 30, 2009

  • More Ruby 1.9 compatibility fixes: all specs pass.

Tue, Dec 29, 2009

  • Fixed Ruby 1.9 compatibility issues with I18n.t (thanks, Gavin!)
  • Fixed rendering of callback hooks to be compatible with Ruby 1.9.
  • Fixed password reset submission form (thanks, Roman!)

Mon, Dec 28, 2009

  • XSS cleanup across views and models (thanks, Louis!)
  • Refactoring permissions templates (thanks, Rit!)
  • Updated README file.
  • Version 0.9.9 (yay!)

Sat, Dec 19, 2009

  • Fixed deprecation warning when adding a new comment.
  • Fixed Apache/Passenger issue of not being able to load tab settings.
  • Merged in I18n branch: Fat Free CRM could be easily localized now by dropping in config/locales file.
  • Added exception handling and custom 500 status code template.

Mon, Dec 14, 2009

  • Make sure no activity records are left behind when model record gets deleted from the database.

Sun, Dec 13, 2009

  • Fixed broken sidebar search in Admin/Users.
  • Refactored sidebar rendering to explicitly check if template file exists.

Sat, Dec 12, 2009

  • Upgraded [simple_column_search] plugin that adds search support for Postgres.
  • More I18n tweaks in views.
  • Metallica show at HP Pavilion in San Jose!

Sun, Nov 29, 2009

  • Added optional PLUGIN=plugin parameter to "rake crm:settings:load" task.
  • Sorted locale keys, synced up English, Portuguese, and Russian locale files.

Tue, Nov 24, 2009

  • Happy birthday, Fat Free CRM is one year old!

Wed, Nov 18, 2009

  • Added Thai language translation (thanks, Apirak!)

Mon, Nov 16, 2009

  • Streamlined CSS styles to fix text wrapping.
  • Added explicit CSS value to fix tabs height (thanks, Apirak!)
  • Fixed time calculations for dashboard activities.

Thu, Nov 12, 2009

  • Restructured settings to take advantage of locale.
  • NOTE: re-run crm:settings:load

Wed, Nov 11, 2009

  • Moved hardcoded setting values from config/settings.yml to locale.

Mon, Nov 9, 2009

  • Merged with lanadv/i18n branch (thanks, Lana!)

Fri, Nov 6, 2009

  • Adjust total campaign revenue when related opportunity is won (LH #121).
  • Refresh campaign sidebar when updating related opportunity (LH #121).
  • Refresh campaign sidebar when rejecting or converting related lead (LH #121).
  • Display newly created opportunity when converting lead from campaign page (LH #121).

Thu, Nov 5, 2009

  • Writing specs for LH #121.

Wed, Nov 4, 2009

  • Correctly set opportunity campaign and source when converting a lead (LH #119).
  • Show correct campaign name and source when adding a lead from campaign landing page.
  • Update lead counters when reassigning leads between campaigns (LH #117).

Sun, Nov 1, 2009

  • Implemented I18n for options across all models.

Sat, Oct 31, 2009

  • Correctly show opportunity summary when opportunity stage hasn't been specified.
  • Update Campaign summary when creating or deleting related lead or opportunity.
  • Fixed "rake crm:setup" task to be compatible with ruby 1.9.

Fri, Oct 30, 2009

  • Introduced Sortable module, more work on I18n.

Sat, Oct 24, 2009

  • Allow renaming both main and admin tabs (see config/settings.yml).
  • Refactored gravatars to always show default image if gravatar is missing.
  • Fixed Facebox usage within Admin area.
  • Release 0.9.8a.

Thu, Oct 22, 2009

  • Fixed SASS deprecation warnings making it compatible with Heroku again (thanks, Jim!).
  • Refactored Facebox library (again!) to take into account [base_url] setting.

Wed, Oct 21, 2009

  • Include modules from "lib/fat_free_crm.rb" so that they're loaded when running rake.

Tue, Oct 20, 2009

  • Added Language option stubs to user's profile.
  • Disabled tab highlighting when showing user's profile.
  • Include all Fat Free CRM modules from Rails initializer.
  • Added FatFreeCRM::I18n module.

Sun, Oct 18, 2009

  • Merged localization commits onto i18n branch (thanks, Lana!)

Wed, Oct 14, 2009

  • Make sure opportunity name does not exceed 64 characters (thanks, Rit!)
  • Changed required Rails version to v2.3.4
  • Updated model annotations for schema version #023.
  • Release 0.9.8.

Sun, Oct 11, 2009

  • Added full support for deploying Fat Free CRM in subdirectory (see config/settings.yml).
  • Made Facebox library work with the project is deployed in subdirectory.

Sat, Oct 10, 2009

  • Happy birthday, Diana!
  • Setting up Apache with the latest Passenger.

Fri, Oct 9, 2009

  • Prevent multiple form submissions by pressing [Submit] button twice.
  • Fixed apparent MySQL migration error on Windows/XP.

Wed, Oct 7, 2009

  • Moved [uses_user_permission] code from plugin to core library.
  • Added inspector logging.

Mon, Oct 5, 2009

  • Added [rake crm:hooks] task that enumerates the hooks (thanks, Eric!)

Sat, Oct 3, 2009

  • Removed [uses_mysql_uuid] plugin and deprecated support for UUIDs.

Tue, Sep 29, 2009

  • Adjusted activity timestamp to reflect UTC offset (thanks, Andrew!)
  • Allow creating opportunities with non-unique name.
  • Added :auto_complete controller hook.

Sun, Sep 27, 2009

  • Added sidebar hooks on asset landing pages.
  • crm_tags: added support for showing tags on asset landing pages.

Sat, Sep 26, 2009

  • Added hooks for inline CSS styles and JavaScript epilogue.
  • crm_tags: added JavaScript and CSS stylesheets for tags.
  • crm_tags: make sure tags stay unique when searching.

Thu, Sep 24, 2009

  • crm_tags: Made controller methods work with query string that contains tags.

Tue, Sep 22, 2009

  • crm_tags: Proof of concept of combining query string with hash-prefixed tags.

Mon, Sep 21, 2009

  • Added hooks to model view partials.

Mon, Sep 21, 2009

  • Added hooks to model view partials.

Sun, Sep 20, 2009

  • More work on [crm_tags] plugin.

Fri, Sep 18, 2009

  • Merged String#to_url (thanks, Rit!)

Thu, Sep 17, 2009

  • Fixed task completion bug for tasks with specific due date (thanks, Andrew!)
  • Added more task model specs.

Mon, Sep 14, 2009

  • Merged in Andrew's patch that solves disappearing tasks puzzle (thanks, Andrew!)
  • Created task model specs that prove Andrew's theory.

Sun, Sep 13, 2009

  • Added [get_*] controller hooks.
  • Refactored FatFreeCRM::Callback.hook to simplify and support hook chains.
  • Implemented controller hooks in [crm_tags] plugin.

Sat, Sep 12, 2009

  • Added [*_top_section_bottom] view hooks.
  • Make Rails not to reload core classes when developing a plugin.

Thu, Sep 10, 2009

  • More work on [crm_tags] plugin and its view hooks.

Wed, Sep 9, 2009

  • Injecting [acts_as_taggable_on] to existing models.

Mon, Sep 7, 2009

  • Started with [crm_tags] plugin.

Sun, Sep 6, 2009

  • Release 0.9.7.
  • Open up [Quick find] on click rather than on mouseover.
  • Added bounce effect to the login screen (fun!).
  • Added CONTRIBUTORS file.

Sat, Sep 5, 2009

  • Added overlay to the facebox library.
  • Upgraded Rails Engines plugin (edge 2009-06-16).
  • Boot Rails Engines right after Rails boots itself up.

Thu, Sep 3, 2009

  • Make sure [rake crm:setup:admin] can actually assign admin attribute (thanks Rit!)
  • Correctly assign and revoke admin rights in Admin/Users (thanks Rit!)
  • Refactored Tabs code to avoid duplication.

Tue, Sep 1, 2009

  • Fixed user signup vulnerability (thanks, Rit!)
  • Suppress terminal echo when asking for admin password in [rake crm:setup:admin] task.

Sun, Aug 30, 2009

  • Get flip_subtitle working in IE8 (thanks, Hamish!)
  • Make sure simple_column_search does not escape period and single quote (thanks, Rit!)
  • Don't suspend Admin users (thanks, Rit!)
  • Moved [crm_sample_tabs] plugin into separate repository.
  • Merged plugin tab support into the master branch.

Sat, Aug 29, 2009

  • Some refactoring and more comments explaining the examples in [crm_sample_plugin].

Thu, Aug 27, 2009

  • Make sure we can run Rake tasks when Settings are missing.
  • Reload User class in [rake crm:setup] task to make sure migration attributes are set.
  • Make sure the user has been authenticated before checking whether she is awaiting approval.

Wed, Aug 26, 2009

  • Implemented #tab method for plugin registration.

Tue, Aug 25, 2009

  • Added [crm_sample_tabs] plugin with the tab registration prototype.

Mon, Aug 24, 2009

  • Implemented user approvals in Admin/Users and closed LH #29.
  • Release 0.9.6.

Sat, Aug 22, 2009

  • Implemented :needs_approval setting for user signups.

Fri, Aug 21, 2009

  • Added new :user_signup setting (see config/settings.yml).
  • User signups are only allowed if :user_signup is set to :allowed or :needs_approval.

Thu, Aug 20, 2009

  • Added support for unattended [rake crm:setup] and [rake crm:setup:admin] tasks.
  • Warn about database reset in [rake crm:setup] task.
  • Removed dependency on Highline gem and removed it from vendors/gems.
  • Added [:user_signup] setting and started with the signup permissions.

Wed, Aug 19, 2009

  • Added view hooks on landing pages of all major models.

Tue, Aug 18, 2009

  • More work on [crm_issues] plugin.

Mon, Aug 17, 2009

  • Work on [crm_issues] plugin.

Sat, Aug 15, 2009

  • Implemented plugin dependencies to be able to change plugin loading order.
  • Pass on [lead.id] when converting it into a contact (LH #86).
  • Corrected format of opportunity closing date (GH #7).

Fri, Aug 14, 2009

  • Reviewed pccl fork and [fat_free_issues] plugin.

Thu, Aug 13, 2009

  • Added user search and pagination to Admin/Users.

Wed, Aug 12, 2009

  • Adding search and pagination to Admin/Users.

Tue, Aug 11, 2009

  • Installed [Highline] gem in vendor/gems for [rake crm:setup:admin] task.
  • Implemented [rake crm:setup:admin] task to create admin user.

Sat, Aug 8, 2009

  • Added :before_destroy filters for User model.
  • Implemented deleting users in Admin interface.
  • Refactored flash messages to set notice/warning class on the fly.

Wed, Aug 5, 2009

  • Added confirmation when deleting an user (Admin/Users/Delete).

Tue, Aug 4, 2009

  • Upgraded [acts_as_commentable] plugin for Ruby 1.9 compatibility.
  • Updated tab settings to allow Fat Free CRM to run from a subdirectory (thanks, okyada!).
  • Updated [rake crm:settings:load] task to ensure Rails 2.3.3 compatibility.
  • Implemented Admin > [Edit User] form.

Mon, Aug 3, 2009

  • Implemented Admin > [Create User] form.
  • Include all application helpers except the ones in /admin/helpers subdirectory (GH #5).
  • Make sure editing assets doesn't change asset owner (LH #79).
  • Implemented [Suspend] and [Reactivate] when managing users.
  • Prevent suspended user from logging in.

Sun, Aug 2, 2009

  • Updated authentication to allow creating users with blank passwords.

Sat, Aug 1, 2009

  • More work on Admin/Users: added list of users and [Create User] form.

Fri, Jul 31, 2009

  • Added [suspended_at] to User model, fixed typo (LH #81).

Thu, Jul 30, 2009

  • Fixed ActionMailer password reset issue (thanks, James!).
  • Use truncate() instead of shorten() for multibyte chars (thanks, Dima!).
  • Increased the size of the textarea when adding notes (LH #80).

Wed, Jul 29, 2009

  • More work on building the Admin infrastructure.

Tue, Jul 28, 2009

  • Building Admin infrastructure.

Mon, Jul 27, 2009

  • Dropped open_id related tables, added [admin] flag to [users] table.

Sun, Jul 26, 2009

  • Added timezone support.

Fri, Jul 24, 2009

  • Fixed a typo that affected individual permissions (thanks, Guillermo!)
  • Refactored password reset controller and related views.
  • Merged in Spanish translation from chillicoder/master (thanks, Martin!).
  • Release 0.9.5.

Thu, Jul 23, 2009

  • Made UUID support optional (affects MySQL v5+ users only).
  • Removed task-specific flash area; changed to use generic flash messages instead.
  • Store current user in the class to make it easier to access it from observers.
  • Removed password length restriction to allow blank passwords.

Tue, Jul 21, 2009

  • Upgraded HAML/SASS to version 2.2.2 (Powerful Penny) and made it a plugin.
  • Ruby 1.9.1 compatibility fixes.

Mon, Jul 20, 2009

  • Happy birthday, Lana!
  • Annotated models for schema version #19.
  • Implemented Profile > Change Password.
  • Added ability to show flash notices from RJS templates.
  • Removed [open_id_authentication] plugin since it's no longer needed.
  • First gathering at #fatfreecrm channel on irc.freenode.net (thanks, Eric!)

Sun, Jul 19, 2009

  • Completed upgrade to Authlogic 2.1.2
  • Removed support for OpenID authentication

Sat, Jul 18, 2009

  • Upgrading to Authlogic 2.1.2

Wed, Jul 15, 2009

  • Moved avatars in separate directories based on who the avatar belongs to.
  • Implemented avatar_for() to encapsulate uploaded image, gravatar, and default icon.
  • Fixed Paperclip bug when :url option is a lambda and not a string.
  • Release 0.9.4.

Mon, Jul 13, 2009

  • Finished with user avatar upload, including controller and view specs.

Sun, Jul 12, 2009

  • Back home from Pismo Beach.

Thu, Jul 9, 2009

  • On my way to Pismo Beach, CA.

Tue, Jul 7, 2009

  • More tweaks for Profile > Upload Avatar form.

Mon, Jul 6, 2009

  • Replaced [mini_magick/has_image] combo with [paperclip] plugin.
  • Installed [responds-to-parent-plugin].
  • Added [Avatar] model.
  • Implemented Ajax avatar uploads through hidden frame.

Sun, Jul 5, 2009

  • Installed [mini_magick] gem and [has_image] plugin.

Sat, Jul 4, 2009

  • Finished [Edit Profile] form which now updates all other page elements.
  • Use root route instead of home (thanks, Dr.Nic!)

Fri, Jul 3, 2009

  • Added user controller and view specs.
  • Converted [Edit Profile] form to Ajax, implemented update.

Wed, Jul 1, 2009

  • Added copyright notices (thanks, Michael!).
  • Added routes and Ajax form stubs for [Edit Profile], [Upload Avatar], and [Change Password].

Tue, Jun 30, 2009

  • More work on user profile.
  • Applied patches to fix an issue with comments and their formatting (thanks, Eric!).

Sun, Jun 28, 2009

  • Another iteration on User Profiles; all users now have personal profile page.
  • Fixed form validation issue on asset landing pages (closes GH #3).
  • Refactored form validation specs.
  • Release 0.9.3.

Sat, Jun 27, 2009

Combined [Preferences] and [Profile] into single [Preferences] menu item.

Thu, Jun 25, 2008

  • Hide [Create...] form before showing [Edit...] to make sure initial focus gets set properly.
  • Rewrote config/settings.yml to use more familiar Ruby-like syntax.

Mon, Jun 22, 2009

Sat, Jun 20, 2009

  • Assets now show all related tasks, even if they were not created or assigned by current user.
  • Release 0.9.2.

Fri, Jun 19, 2009

  • Revamping the way a list of tasks is shown on related asset page.
  • Added [completed_by] field to Task model to be able to show who completed the task.

Thu, Jun 18, 2009

  • Fixed task creation issue on landing pages; added missing task stylesheets.
  • Simplified version handling to avoid unnecessary database queries.
  • Fixed Rails 2.3 incompatibility (expand/collapse in forms and [Cancel] for notes).
  • Changed defaults to more reasonable values (thanks, Lana!).

Mon, Jun 15, 2009

  • Updated Readme file (added links to direct downloads and Google Groups).
  • Installed [facebox-for-prototype] JavaScript library.
  • Implemented About box showing version number and helpful links (rerun rake crm:setup!)

Sat, Jun 13, 2009

  • Upgraded to work with Rails 2.3.2
  • Upgraded [rspec], [rspec-rails], and [open-id-authentication] plugins.
  • Upgraded [acts-as-paranoid] plugin.
  • Fixed task title naming issue.
  • Fixed opportunity unique index issue (SQLite).
  • Tagged 0.9.0 to build downloadable distributions on Github.

Thu, Jun 11, 2009

  • Finished user options for the Recent Activity (LH #46).
  • Fixed sporadic spec failures when running with SQLite.

Wed, Jun 10, 2009

  • Implemented options for Opportunities and Contacts.
  • Started with the options for the Recent Activity.

Tue, Jun 9, 2009

  • Implemented options for Accounts.

Sun, Jun 6, 2009

  • Implemented options for Leads.
  • Happy birthday, Rema!

Thu, Jun 4, 2009

  • Implemented :sort_by option for Campaigns.
  • Wrote specs and finished [Options] for Campaigns.

Wed, Jun 3, 2009

  • Implemented :per_page, and :format user preferences for Campaigns.
  • Revisited user Preference model and wrote full spec coverage.
  • Refactored application.js to simplify remote form updates.
  • Updated stylesheets to support long and brief list formats.

Tue, Jun 2, 2009

  • Added [Options] form for Campaigns with all preferences stubbed.

Mon, Jun 1, 2009

  • Happy birthday, Sophie!

Sun, May 31, 2009

  • Work on adding [Options] inline form and related controller actions.

Sat, May 30, 2009

  • Implemented crm.Menu class and added menu related CSS styles.

Fri, May 29, 2009

  • Fixed opportunity assignment issue reported by Deepu (LH #49).
  • Fixed similar issue with the contact assignments.
  • Fixed account sidebar issue when shipping/billing addresses are missing.

Thu, May 28, 2009

  • Server installation and configuration at Linode.

Wed, May 27, 2009

  • Refactored auto_complete to use before_filter.
  • Created shared behavior specs to test auto_complete.
  • Display a message when no quick find matches were found.
  • Uninstalled [auto_complete] plugin since we're not using it.
  • Signed up for Linode.com

Tue, May 26, 2009

  • Happy birthday, Laura!

Mon, May 25, 2009

  • Implemented jumpbox (called "Quick Find").

Sun, May 24, 2009

  • More work on jumpbox.

Sat, May 23, 2009

  • Restructured application's JavaScript and added crm.Popup class.
  • Added "Jump to..." link that shows the jumpbox (see LH #45).

Fri, May 22, 2009

  • Happy birthday, Dad!

Thu, May 21, 2009

  • Fixed JavaScript and CSS caching issues in production environment.

Wed, May 20, 2009

  • Gracefully handle use cases when previous or related asset is deleted or protected.
  • Make sure commentable object exists and is accessible to current user.
  • Implemented specs for Comments controller.

Tue, May 19, 2009

  • Added missing and protected object handling for #convert, #promote, #reject (Leads).
  • Added new [tracked_by] named scope for Tasks.
  • Added missing and protected object handling for Tasks.
  • Refactored rescue clause to use respond_to_not_found().

Mon, May 18, 2009

  • Added missing and protected object handling for #update and #delete (all except Tasks).

Sun, May 17, 2009

  • Added missing object handling for #edit action (all core objects except Tasks).
  • If object permissions prevent access, treat the object as missing.
  • Refacoring: use more idiomatic Rails named scope (User#except).

Sat, May 16, 2009

  • Added missing object handling for #show action (all core objects except Tasks).
  • Added controller routing specs for new routes.

Fri, May 15, 2009

  • Replaced explicit MySQL trigger creation with [add_uuid_trigger].

Thu, May 14, 2009

  • Started with LH #34 (Gracefully handle missing objects).
  • Replaced regular flash messages with non-sticky ones.
  • Make sure search box gets shown after creating, updating, or deleting an account.

Wed, May 13, 2009

  • Implemented search for campaigns, opportunities, accounts, and contacts.
  • Made it easier to reject leads (LH #35).
  • Added sidebar summary for accounts.
  • Added web presence links for leads and contacts.

Tue, May 12, 2009

  • Added company field to leads search.

Mon, May 11, 2009

  • Implemented live search for leads that can be reused in other controllers.
  • Fixed demo data generation to produce random recently viewed items list.

Sun, May 10, 2009

  • More work on simplifying search.

Fri, May 8, 2009

  • Created initial implementation of live search (Leads only so far).

Thu, May 7, 2009

  • Installed [simple_column_search] plugin.
  • Initial implementation of live search for Leads.

Wed, May 6, 2009

  • Implemented prototype search box for Leads with stubbed controller.

Tue, May 5, 2009

  • Started with live search (LH #22).

Mon, May 4, 2009

  • Last bit of paging refactoring before closing LH #18.

Sun, May 3, 2009

  • Implemented Ajax pagination for Opportunities.
  • Simplified paging by using single proxy to store and retrieve current page.

Sat, May 2, 2009

  • Implemented Ajax pagination for Contacts.

Fri, May 1, 2009

  • Implemented Ajax pagination for Campaigns.

Thu, Apr 30, 2009

  • Implemented Ajax pagination for Accounts.

Wed, Apr 29, 2009

  • Implemented Ajax pagination for Leads.

Tue, Apr 28, 2009

  • Started to explore alternative approach to pagination (see Leads).

Mon, Apr 27, 2009

  • Initial implementation of on demand paging (Accounts only so far).
  • Fixed SQLite incompatibilities (thanks, James!)
  • Restructured pagination templates and added specs.

Sun, Apr 26, 2009

  • Researched on demand paginations, and [will_paginate].

Sat, Apr 25, 2009

  • Installed [will_paginate] plugin.

Fri, Apr 24, 2009

  • Happy birthday -- we're 5 month old ;-)
  • Make sure tasks don't get onto recently viewed items list.
  • Added "completed", "reassigned", and "rescheduled" activity logs for tasks (closes LH #17).

Thu, Apr 23, 2009

  • Filter activities based on asset permissions, even for deleted assets.
  • Pulled in first patches from fork (thanks, Scott!)

Wed, Apr 22, 2009

  • Filter activities based on asset permissions (existing assets only so far).

Tue, Apr 21, 2009

  • Honor object permissions when displaying activity log (LH #17).

Mon, Apr 20, 2009

  • Finished with recently viewed items sidebar panel (LH #28).

Sun, Apr 19, 2009

  • Refresh recently viewed items when creating, editing, or deleting core objects.

Sat, Apr 18, 2009

  • Scraped the idea of demo factories -- fixtures are easier to use and maintain.
  • Updated demo fixtures and crm:demo:load task to simulate user activities and recently viewed items.
  • Implemented "commented on" user activity type.

Fri, Apr 17, 2009

  • Back from LA and UCSB.

Thu, Apr 16, 2009

  • More work on demo factories: loading users and accounts.

Wed, Apr 15, 2009

  • Creating, updating, or deleting core assets also updates recently viewed items list.

Tue, Apr 14, 2009

  • Fixed missing uuid generation caused by observing models.

Mon, Apr 13, 2009

  • Harv Ecker is up in San Francisco tonight.

Sun, Apr 12, 2009

  • Initial implementation of recently visited items.

Sat, Apr 11, 2009

  • Lovely IRS weekend.

Fri, Apr 10, 2009

  • Added activity tracking for recently viewed items.
  • Added activity named scopes to select records by user and action.

Thu, Apr 9, 2009

  • Fixed activity time-stamp format in Dashboard.

Wed, Apr 8, 2009

  • Created Activity model, related table, and factory.
  • Basic initial implementation of activity observers and recent activity.
  • Created specs for activity observers.

Tue, Apr 7, 2009

  • Added quick reschedule links to [Edit Task].
  • Finished with editing tasks.

Mon, Apr 6, 2009

  • Introduced called_from_(index|landing)_page? helpers.
  • A couple of bug fixes (hiding [Lead Convert] and handling HTTP :delete).

Sun, Apr 5, 2009

  • More tweaks rescheduling and reassigning tasks.

Sat, Apr 4, 2009

  • Added :before_update hooks for task along with related model specs.
  • Renamed [task.due_at_hint] to [task.bucket] to simplify naming conventions.
  • Initial implementation of task rescheduling and reassigning.

Fri, Apr 3, 2009

  • Moved [Edit Task] cancellation logic from controller to view.

Thu, Apr 2, 2009

  • Added view specs for task#destroy, fixed a couple task related bugs.
  • Refactored view specs.

Wed, Apr 1, 2009

  • Finished [Edit Lead] views and view specs.
  • Started with [Edit Task] form and related views.
  • Refactored create, edit, and complete task views and created the specs.

Tue, Mar 31, 2009

  • More work on [Edit Lead] views and specs.

Mon, Mar 30, 2009

  • More work on [Edit Lead] form (leads controller and its specs).

Sun, Mar 29, 2009

  • Finished with [Edit Campaign] including controller and view specs.

Sat, Mar 28, 2009

  • Fixed updating permissions bug in [uses_user_permissions] plugin.
  • Fixed editing shared permissions for opportunities, contacts, and accounts.

Thu, Mar 26, 2009

  • Refactored custom Rails initializers and added custom date format.
  • Finished with [Edit Opportunity] including full controller and views specs.
  • Fixed JavaScript bug caused by not wiping out hidden create form.
  • Use String#shorten instead of truncate() helper.

Wed, Mar 25, 2009

  • More work on [Edit Opportunity] and its specs.

Tue, Mar 24, 2009

  • Finished with [Edit Contacts] including full controller and views specs.

Mon, Mar 23, 2009

  • Finishing touches for [Edit Contacts] forms.
  • Moved sidebar to the lefthand column, changes location of Sass templates.
  • Added [x] close button to all inline forms.

Sat, Mar 21, 2009

  • More work on [Edit Contact] form (spec coverage pending).
  • Fixed task controller specs when due tomorrow == due this week.
  • Added spec coverage for [Edit Contact].
  • Added [x] form control, link_to_cancel and link_to_close helpers.

Fri, Mar 20, 2009

  • More work on editing a contact.

Wed, Mar 18, 2009

  • Updated view specs to use Factories, 100% pass.
  • Updated task controller specs to use Factories.
  • A week of transition to [factory_girl] is over: 317 specs, all green.

Mon, Mar 16, 2009

  • Refactored leads controller specs using factories.

Sun, Mar 15, 2009

  • Started refactoring leads controller specs.

Sat, Mar 14, 2009

  • Implemented specs for Account views and Home controller.
  • Implemented specs for Campaigns controller.

Fri, Mar 13, 2009

  • Implemented specs for Settings model.

Thu, Mar 12, 2009

  • 100% spec code coverage for Accounts, Contacts, and Opportunities.

Wed, Mar 11, 2009

  • Installed [factory_girl] plugin.
  • Created model factories for all core models.
  • Rewrote account controller specs to use factories instead of mocks.
  • Started refactoring opportunity controller specs to use factories instead of mocks
  • Added #as_hash and #invert class methods to Settings

Tue, Mar 10, 2009

  • Put in place inline for Lead editing and conversion.
  • Started with inline forms for Task editing.
  • Depreciated contexts, refactored application's JavaScript.

Mon, Mar 9, 2009

  • Put in place inline edit forms for Campaigns, Accounts, Contacts, and Opportunities.

Sun, Mar 8, 2009

  • More work on inline edit and create forms.

Sat, Mar 7, 2009

  • Moved context code to module and made it available to controllers and views.
  • Started with [Edit Contact] form.

Fri, Mar 6, 2009

  • Implemented [Edit Account] form.
  • Implemented basic functions of [Edit Campaign].

Thu, Mar 5, 2009

  • Moved some JavaScript code from helpers to application.js.
  • Added support for showing interchangeable inline forms (Convert and Edit).
  • Refactored saving/restoring context for inline forms.

Wed, Mar 4, 2009

  • Refactored tools menu in lists to use block div.
  • Refactored lead conversion to use remote form.
  • Started with the [Edit Lead] inline form.

Tue, Mar 3, 2009

  • Refactored lead star rating to always show 5 stars (grayed out or not).
  • Removed [notes] field from core models and forms.
  • Created v0.1 "Steinitz" milestone and tickets for "Steinitz" release.
  • Set up GitHub service hook to integrate commits with the Lighthouse.

Mon, Mar 2, 2009

  • Implemented Lead and Contact summary sidebar for individual Leads and Contacts.

Sun, Mar 1, 2009

  • Added core extension library.
  • Implemented Opportunity summary sidebar for individual Opportunity.

Sat, Feb 28, 2009

  • Added gravatar support for leads and contacts.

Fri, Feb 27, 2009

  • Added [gravatar] plugin and implemented gravatars for notes.

Thu, Feb 26, 2009

  • Github commits are up on Twitter at http://twitter.com/fatfreecrm
  • More refactoring to simplify handling of inline forms.
  • Implemented adding related tasks for Leads, Accounts, Contacts, and Opportunities.

Wed, Feb 25, 2009

  • Refactored tasks, added ability to create related tasks (Campaigns only so far).

Tue, Feb 24, 2009

  • Implemented adding opportunities from the [Campaign] landing page.
  • Implemented adding opportunities from [Contact] landing page.
  • Implemented adding contacts from [Opportunity] landing page.
  • Three months anniversary ;-).

Mon, Feb 23, 2009

  • Implemented adding leads from the [Campaign] landing page.
  • Implemented adding contacts from the [Account] landing page.
  • Implemented adding opportunities from the [Account] landing page.
  • Updated README file.

Sun, Feb 22, 2009

  • Adding parent object support for inline forms.

Fri, Feb 20, 2009

  • Major refactoring to support inline form embedding throughout the system.

Thu, Feb 19, 2009

  • Simplified storing expand/collapse state for form sections.
  • Started refactoring to support inline form embedding.

Wed, Feb 18, 2009

  • Converted [Create...] forms to remote to be able to reuse them inline.
  • Refactored javascript and stylesheet includes for popup calendar control.
  • Consolidated scattered inline stylesheets into single shared partial.

Tue, Feb 17, 2009

  • Refactored styles, added [Campaign] to [Lead] and [Opportunity] landing pages.
  • Added [Contacts] and [Opportunities] to [Account] landing page.
  • Added [Accounts] and [Opportunities] to [Contact] landing page.
  • Added [Accounts] and [Campaigns] to [Opportunity] landing page.
  • Refactored JavaScript code to automatically set focus on first form field.

Mon, Feb 16, 2009

  • Save shown/hidden state of [post a note] form for all commentable models.
  • Updated controller and view specs to support commentables.
  • Added comments fixture to generate sample comments for all the core models.

Sun, Feb 15, 2009

  • Implemented adding notes for campaign.
  • Added notes for other core models (Account, Contact, Lead, and Opportunity).

Sat, Feb 14, 2009

  • More design work on campaign landing page (adding comments, etc.)

Fri, Feb 13, 2009

  • Implemented Campaign Summary sidebar for the campaign landing page.
  • Generated [Comment] scaffold and created database migration.
  • Added [acts_as_commentable] to core models.
  • Added visible/invisible helpers to flip element's visibility style.

Thu, Feb 12, 2009

  • Installed [acts_as_commentable] plugin.
  • More work designing simple and consistent landing pages.

Wed, Feb 11, 2009

  • Researching and mocking up landing pages for campaigns and leads.

Tue, Feb 10, 2009

  • Implemented creating and assigning tasks for the specific date from the calendar.

Mon, Feb 9, 2009

  • Converted remaining forms to HAML and the stylesheet to SASS.

Sun, Feb 8, 2009

  • Added custom logger to highlight logged messages.
  • Added [task_at_hint] field to [tasks] table to capture due date request.
  • Refactored task model and crm.date_select_popup() in application.js.

Sat, Feb 7, 2009

  • Created initial implementation of adding a new task (all except specific date).
  • Refactored tasks code to simplify filtering.
  • Implemented flipping between dropdown and calendar popup.
  • Updated task related controller and view specs.

Fri, Feb 6, 2009

  • Finished implementing after_filter callback hook in [web-to-lead] plugin.
  • Implemented tasks deletion for all three views.
  • More fun with SASS stylesheets -- pretty cool stuff.

Thu, Feb 5, 2009

  • More work researching application's after_filter and making it work right.

Wed, Feb 4, 2009

  • Added [app_after_filter] hook and moved the rest of [web-to-lead] code to plugin.
  • Started converting CSS to SASS.

Tue, Feb 3, 2009

  • Added README.rdoc and sample database configuration files, updated sample users.
  • Added :app_before_filter hook, extracted [web-to-lead] code and moved it to plugin.
  • Tweaks to login and signup forms (to be converted to HAML soon).

Mon, Feb 2, 2009

  • Updated task related controller and view specs.
  • Extracted sample plugin and moved it into separate Git repository.

Sun, Feb 1, 2009

  • SuperBowl!!
  • Refactored tasks controller to offload most of sidebar and filter processing to task model.
  • Impletented tasks/complete for pending tasks.

Sat, Jan 31, 2009

  • [Create new task] and [Assign new task] forms now save/restore their display state.
  • Implemented task filtering for all three views.
  • Added completion checkboxes and created initial implementation.

Fri, Jan 30, 2009

  • Ruby 1.9.1 final was released today!
  • Added new named scopes to support assignments and completed tasks.
  • Added sidebar filters for completed tasks.
  • Added CSS styles for single-line lists and redesigned task templates.

Thu, Jan 29, 2009

  • Unpacked gem dependencies to /vendor/gems (ruby-openid, haml, and faker).
  • Check whether database connection is available in [uses_mysql_uuid] plugin.
  • Made task filters work for pending and assigned tasks.

Wed, Jan 28, 2009

  • Implemented task selector to switch between pending, assigned, and completed tasks.
  • Major overhaul of task templates to support three task views.
  • Changed rake's namespace from [app] to [crm].

Tue, Jan 27, 2009

  • Added sidebar tasks filtering by due date.
  • Added CSS styles for selector control.
  • Added prototype selector control for tasks.

Mon, Jan 26, 2009

  • Added support for inline forms and added [Create New Task] form.
  • Updated task named scopes to evaluate them on each request rather than on server startup.

Sun, Jan 25, 2009

  • Added task categories and due dates to system settings.
  • Completed first implementation of Tasks index page.

Sat, Jan 24, 2009

  • Added named scopes for tasks model, created tasks fixtures.
  • Two months anniversary ;-).

Fri, Jan 23, 2009

  • Moved permissions related code to [uses_user_permissions] Rails plugin.
  • Refactored models to make use of [uses_user_permissions] plugin.
  • Moved permission model to [uses_user_permissions] plugin.
  • Updated [Task] model and database schema for [Tasks] table.

Thu, Jan 22, 2009

  • Implemented list delete for accounts, campaigns, leads, and opportunities.
  • Generated Tasks scaffold.
  • Added [Tasks] tab to default settings, renamed [Home] tab to [Dashboard].

Wed, Jan 21, 2009

  • Implemented list delete for contacts.

Tue, Jan 20, 2009

  • Refactored Setting.opportunity_stage to make sure the insertion order is preserved.
  • Implemented opportunities filtering by stage.
  • Welcome, Mr. President.

Mon, Jan 19, 2009

  • Improved login/logout flash messages.
  • Refactored list templates to use collection partials.
  • Added sidebar for Campaigns to filter them out by status.

Sun, Jan 18, 2009

  • More fine tuning of plugins and callback hooks.
  • Sample plugin now implements view, controller, and controller filter hooks.

Sat, Jan 17, 2009

  • Implemented FatFreeCRM::Plugin and FatFreeCRM::Callback modules.
  • Created first sample Fat Free CRM plugin!
  • Uninstalled Searchlogic plugin and added Rails Engines.
  • Fixed :my scope to use LEFT OUTER JOINs with permissions.

Fri, Jan 16, 2009

  • Experimenting with application plugins.

Thu, Jan 15, 2009

  • Exploring infrastructure for application plugins.

Wed, Jan 14, 2009

  • Added :my named scope for main models to support permissions.
  • Refactored all controllers to use :my permission-based scopes.
  • Refactored [Leads/Index] and [Leads/Filter] to use collection partial.
  • Added missing database indices.

Tue, Jan 13, 2009

  • Added rendering of local sidebar template if it's available.
  • Added sidebar for Leads and implemented initial version of leads filtering by status.

Mon, Jan 12, 2009

  • Replaced account template stubs with actual contact and opportunity numbers.
  • Added web-to-lead submission hook to Leads controller (thanks bitdigital)!

Sun, Jan 11, 2009

  • Made campaign and lead models track lead-to-opportunity conversion ratio.

Sat, Jan 10, 2009

  • Implemented backend for [Opportunity/New].
  • Refactored models validation code.
  • Added fixtures for join tables.

Fri, Jan 9, 2009

  • Converted [Opportunity/Show] to HAML and created [Opportunity/New] form (with backend stub).

Thu, Jan 8, 2009

  • Simplified submission for forms with account create/select.
  • Added app-specific rake tasks -- app:setup, app:demo, and app:reset.
  • Updated [uses_mysql_uuid] plugin to explicitly check for MySQL v5 or later.
  • Updated database migrations and rake tasks to make them database-type neutral.
  • Fat Free CRM now works with MySQL v4 and SQLite!

Wed, Jan 7, 2009

  • Implemented backend for [Contact/New].
  • Made model functions more general for better code reuse.

Tue, Jan 6, 2009

  • Figured out how to make [has_one :through] work and save the join record.
  • Restructured [uses_mysql_uuid] to use proper module nesting and extend base with SingletonMethods.
  • Fixes in opportunity/index and contact/delete.
  • Created [Contact/New] form (with backend stub).
  • Moved common JavaScript functions to application namespace.

Mon, Jan 5, 2009

  • Finished refatoring [Lead/Convert].
  • Started with index page for contacts.

Sun, Jan 4, 2009

  • Streamlined [Lead/Convert] to make it use objects and default values.
  • Added [assigned_to] to accounts and [access] to opportunities.
  • Updated [Account/New] form.

Sat, Jan 3, 2009

  • Refactoring of [Lead/Convert] using [fields_for].

Fri, Jan 2, 2009

  • Implemented backend for [Lead/Convert] - create contact along with optional account and opportunity.
  • Fixed [uses_mysql_uuid] to work with AR validations.
  • Minor database schema changes.

Thu, Jan 1, 2009 -- Happy New Year!

  • Created [account_contacts], [account_opportunities], and [contact_opportunities] join tables.
  • Implemented HTML designs and JavaScript for [Lead/Convert] and [Contact/New] forms (with backend stubs).

Wed, Dec 31, 2008

  • More design work on [Lead/Convert] and [Contact/New] forms.

Tue, Dec 30, 2008

  • Added new view/edit/delete icons, started with [Lead/Convert].
  • Minor changes in [opportunities] migration.

Mon, Dec 29, 2008

  • More work on opportunity index page.
  • Fixed find() class override in [uses_mysql_uuid] plugin.

Sun, Dec 28, 2008

  • Added opportunity stage settings and colors.
  • Created opportunities fixtures and started with opportunity index page.

Sat, Dec 27, 2008

  • Added find() override in [uses_mysql_uuid] plugin to make it possible to use find() instead of find_by_uuid().
  • Added [contacts] and [opportunities] database migrations.
  • Generated [opportunity] scaffold, added [contacts] fixtures.

Fri, Dec 26, 2008

  • Some model and javascript refactoring.
  • Another sweep at specs to make them pass with the introduction of UUIDs.

Thu, Dec 25, 2008

  • Update campaign lead count and conversion ratio when creating a new lead.
  • Make sure :uuid gets reloaded from the database and not from cached attributes.
  • Added extra fields to [User] model and implemented [User/Edit profile].

Wed, Dec 24, 2008

  • Created [uses_mysql_uuid] plugin.
  • Converted account, campaign, contact, lead, and user models to use UUIDs.
  • Updated controllers to use find_by_uuid() instead of find().
  • Updated routes to recognize and extract UUID from URLs.

Tue, Dec 23, 2008

  • Updated controller and view specs.
  • Added permissions section to [Lead/New] form.
  • Added validation and saving to [Lead] model to actually create new leads.

Mon, Dec 22, 2008

  • Moved form section toggling to application helper and home controller.
  • Implemented section toggling in account and campaign forms.
  • Added [toll_free_phone] field to accounts.
  • Added .top and .req styles for field labels.
  • Show/hide form sections based on session where we now store expand/collapse state.

Sun, Dec 21, 2008

  • Redesigned [Lead/New] and revamped related CSS styles.
  • Reorganized global settings to make it easier to access them at runtime.
  • Toggle sections using link_to_remote() to be able to store toggle status in a session.
  • Reveal/hide form sections using toggle/slide visual effect.

Sat, Dec 20, 2008

  • Metallica show at Oakland Coliseum was totally amazing!

Fri, Dec 19, 2008

  • Replaced stub text fields with autocomplete in [Leads/New].

Thu, Dec 18, 2008

  • Implemented ratings JavaScript library to show star ratings.
  • Updated [leads] schema, more polishing for [Leads/New] form.

Wed, Dec 17, 2008

  • Added flash confirmation messages for deletes.
  • Work on [Leads/New] form (campaign autocomplete, etc.)

Tue, Dec 16, 2008

  • Updated designs for leads, campaigns, and opportunities using left-hand strips.
  • Implemented new design for accounts index page.

Mon, Dec 15, 2008

  • More work on leads index page.
  • Added leads fixture that uses [faker] gem.
  • Restructured status settings to use :label and :color.

Sun, Dec 14, 2008

  • Work on leads schema, model, and fixtures.

Sat, Dec 13, 2008

  • Insalled [annotate_models] plugin and generated model annotations.
  • Generated campaign fixtures.
  • Updated [Campaign] model to include actual vs. targets.
  • Added permissions to [Campaign/New].
  • Cleaned up specs and fixtures.

Thu, Dec 11, 2008

  • New tableless design for campaign index page.
  • Added new .list CSS styles.
  • Made select date popup work with Safari.

Wed, Dec 10, 2008

  • Made calendar_date_select work with field getting focus (campaign/new).
  • More work on list of campaigns page.

Tue, Dec 9, 2008

  • Implemented [Campaing/New] with dates validation and status set.

Mon, Dec 8, 2008

  • More work polishing campaigns.
  • Added rake task to reset the application (rake app:reset).
  • Automatically set focus on first form field.

Sun, Dec 7, 2008

  • Work on [campaigns] database schema and model.
  • Started with [Campaigns/New], integrated calendar_date_select for start/end dates.

Sat, Dec 6, 2008

  • Implemented account deletion.
  • Fixes for header and signup page layout.

Fri, Dec 5, 2008

  • Installed [advanced_errors] plugin to have full control over the message text.
  • Implemented [Account/New] validating account data and preserving submitted form values.
  • More work on polishing accounts index page.

Thu, Dec 4, 2008

  • Added Preferences controller stub and header link.
  • Updated tabs helper to use global settings to show tabs.
  • Updated spec fixtures to use randomly generated dates and counts.
  • Converted all layouts to haml.

Wed, Dec 3, 2008

  • Added LICENSE file with the GNU Affero General Public License.
  • Fixed auto-generated specs to make them all pass.
  • Implemented hash methods for user preferences.

Tue, Dec 2, 2008

  • Added [Setting] and [Preference] models.
  • Added [campaigns], [leads], and [contacts] scaffolds.
  • Added [config/settings.yml] with default application settings.
  • Created [lib/tasks/settings.rake] to load default settings to the database.
  • Implemented [Setting] model.

Mon, Dec 1, 2008

  • Created [Permission] polymorphic model, added fixtures to load sample users, accounts, and permissions.

Sun, Nov 30, 2008

  • More work on [accounts] model, CSS styles, and [add account] form.

Sat, Nov 29, 2008

  • Added tabbed and tabless layouts, implemented tabs and current tab tracking.
  • Applied CSS styles to all tabless forms (login, sign up, and forgot password).
  • Created two column layout for the main contents area.
  • Created [Accounts] scaffold and added [Accounts] tab.

Fri, Nov 28, 2008

  • Implemented sign up, login, logout, and forgotten password using [authlogic] plugin.

Wed, Nov 26, 2008

  • Installed [open_id_authentication] plugin.
  • Modified [users] table to work with [authlogic] plugin, added tables for openid authentication.

Tue, Nov 25, 2008

  • Installed plugins: [authlogic], [searchlogic], [calendar_date_select], [auto_complete], [in_place_editor], and [haml].

Mon, Nov 24, 2008

  • Added [sessions] and [users] tables, created [User] model.
  • Installed Rspec and [acts_as_paranoid] plugins.
  • Created the project and posted it on GitHub.