├── .htaccess ├── LICENSE ├── CONTRIBUTING.markdown ├── README.markdown └── CHANGELOG.markdown /.htaccess: -------------------------------------------------------------------------------- 1 | 2 | RewriteEngine On 3 | 4 | ## Uncomment and update the path if Genghis is not in your web root. 5 | # RewriteBase /genghis 6 | 7 | ## Use pretty URLs 8 | RewriteCond %{REQUEST_FILENAME} !-f 9 | RewriteRule (.*) genghis.php/$1 [L,QSA] 10 | 11 | 12 | 13 | ## Specify default MongoDB servers 14 | # SetEnv GENGHIS_SERVERS admin:hunter2@mongo.dev;localhost 15 | 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2011 Justin Hileman 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 20 | OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /CONTRIBUTING.markdown: -------------------------------------------------------------------------------- 1 | # Contributions welcome! 2 | 3 | First, I'd like to apologize to the PHP devs for making you mess with Ruby. But it's for the best. 4 | 5 | 6 | ## Development requirements 7 | 8 | You'll need Ruby. Ruby 1.9.x would be best. After you've got Ruby, clone the repo and install dependencies: 9 | 10 | ```sh 11 | git clone https://github.com/bobthecow/genghis 12 | cd genghis 13 | git submodule update --init 14 | gem install bundle 15 | bundle install 16 | ``` 17 | 18 | 19 | ## Building Genghis 20 | 21 | Genghis is... a bit weird. 22 | 23 | * The two app files, `genghis.rb` and `genghis.php` are built via Rake. To regenerate them, run `rake build` from the 24 | project directory. 25 | * If you just want to build one or the other, you can run `rake build:php` or `rake build:rb`. 26 | * For development, it's usually best to use non-minified assets. Run `rake build NOCOMPRESS=1` to skip minification. 27 | * Be sure to commit the compiled `genghis.rb` and `genghis.php` along with your source changes. 28 | 29 | 30 | ## Running the API test suite 31 | 32 | If you're changing the API, you'll need to ensure that the API test suite passes. If you're adding a new feature or 33 | fixing a bug, you should add corresponding tests as well. 34 | 35 | To run the test suite, you'll need PHP 5.4+ and a Mongo instance running on `localhost`. 36 | 37 | ```sh 38 | rspec 39 | ``` 40 | 41 | If you don't have PHP 5.4+, you can test just the Ruby API by editing `spec/spec_helper.rb` and removing `:php` 42 | from the backend list: 43 | 44 | ```diff 45 | --- a/spec/spec_helper.rb 46 | +++ b/spec/spec_helper.rb 47 | @@ -5,7 +5,7 @@ require_relative '../genghis.rb' 48 | 49 | RSpec.configure do |config| 50 | def genghis_backends 51 | - [:php, :ruby] 52 | + [:ruby] 53 | end 54 | 55 | def find_available_port 56 | ``` 57 | 58 | 59 | ## Opening a pull request 60 | 61 | You can do some things to increase the chance that your pull request is accepted the first time: 62 | 63 | * Open all pull requests against the `develop` branch. 64 | * Submit one pull request per fix or feature. 65 | * To help with that, do your work in a feature branch (e.g. `feature/my-alsome-feature`). 66 | * Follow the conventions you see used in the project. This is especially important when switching between languages, 67 | since Genghis is essentially a Ruby server, an PHP server, and a JavaScript client. Make your code look like the code 68 | around it. 69 | * Write API tests that fail without your code, and pass with it. 70 | * Don't bump version numbers. Those will be updated — per [semver](http://semver.org) — once your change is merged into 71 | `master`. 72 | * Update any documentation: docblocks, README, etc. 73 | * ... Don't update the wiki until your change is merged and released, but make a note in your pull request so we don't 74 | forget. 75 | -------------------------------------------------------------------------------- /README.markdown: -------------------------------------------------------------------------------- 1 | [Genghis](http://genghisapp.com) 2 | ================================ 3 | 4 | The single-file MongoDB admin app, by [Justin Hileman](http://justinhileman.info). 5 | 6 | [![Build Status](https://secure.travis-ci.org/bobthecow/genghis.png)](http://travis-ci.org/bobthecow/genghis) [![Dependency Status](https://gemnasium.com/bobthecow/genghis.png)](https://gemnasium.com/bobthecow/genghis) 7 | 8 | [![Genghis](http://genghisapp.com/genghis.png)](http://genghisapp.com) 9 | 10 | There are more ways to run Genghis than you can shake a stick at 11 | ---------------------------------------------------------------- 12 | 13 | 14 | ### Standalone 15 | 16 | If you installed Genghis as a Ruby gem, running Genghis standalone is easy: 17 | 18 | ``` 19 | $ genghisapp 20 | ``` 21 | 22 | Now that it's running, you can use `genghisapp --kill` to stop it. 23 | 24 | **Windows users**: Due to [this bug](https://github.com/quirkey/vegas/issues/3) Genghis always runs in foreground mode. 25 | 26 | If you didn't go the gem route, you can still run `genghis.rb` standalone: 27 | 28 | ``` 29 | $ ruby genghis.rb 30 | ``` 31 | 32 | `genghis.php` can also be run as a PHP 5.4 CLI SAPI standalone server: 33 | 34 | ``` 35 | $ php -S localhost:8000 genghis.php 36 | ``` 37 | 38 | 39 | ### In your LAMP stack 40 | 41 | Simply drop `genghis.php` in a web-accessible directory on a LAMP server. Don't forget `.htaccess` for pretty URLs! 42 | 43 | 44 | ### With nginx and PHP-fpm (and friends) 45 | 46 | You'll need [some fancy config action](https://github.com/bobthecow/genghis/wiki), but it's fairly straightforward. 47 | 48 | 49 | ### In an existing Rack app 50 | 51 | For a super basic Rack config, use a `config.ru` file like this: 52 | 53 | ```rb 54 | require 'genghis' 55 | 56 | run Genghis::Server 57 | ``` 58 | 59 | If you want to load Genghis on a subpath, possibly alongside other apps, it's easy to do with Rack's `URLMap`: 60 | 61 | ```rb 62 | require 'genghis' 63 | 64 | run Rack::URLMap.new \ 65 | '/' => Your::App.new, 66 | '/genghis' => Genghis::Server.new 67 | ``` 68 | 69 | 70 | ### With Rails 3 71 | 72 | You can even mount Genghis on a subpath in your existing Rails 3 app by adding `require 'genghis'` to the top of your 73 | routes file (or in an initializer) and then adding this to `routes.rb`: 74 | 75 | ```rb 76 | mount Genghis::Server.new, :at => '/genghis' 77 | ``` 78 | 79 | 80 | 81 | Genghis Dependencies 82 | -------------------- 83 | 84 | 85 | ### PHP 86 | 87 | You will need at least PHP 5.2 and [the PECL MongoDB driver](http://www.mongodb.org/display/DOCS/PHP+Language+Center). 88 | 89 | 90 | ### Ruby 91 | 92 | Genghis requires Ruby 1.8 or awesomer. 93 | 94 | The easiest way to install Genghis and all dependencies is via RubyGems: 95 | 96 | ``` 97 | $ gem install genghisapp 98 | ``` 99 | 100 | Or you could check out a local copy of the Git repo and install dependencies via Bundler: 101 | 102 | ``` 103 | $ gem install bundler 104 | $ bundle install 105 | ``` 106 | 107 | 108 | 109 | Configuration 110 | ------------- 111 | 112 | Check [the Genghis wiki](https://github.com/bobthecow/genghis/wiki) for additional configuration information. 113 | 114 | 115 | 116 | License 117 | ------- 118 | 119 | * Copyright 2011 [Justin Hileman](http://justinhileman.com) 120 | * Distributed under the [MIT License](http://creativecommons.org/licenses/MIT/) 121 | 122 | 123 | ### Genghis uses a number of amazing open source libraries, distributed under the following licenses 124 | 125 | * [Backbone.js][backbone] — MIT License 126 | * [CodeMirror][codemirror] — MIT-style License 127 | * [Esprima][esprima] — "Simplified" BSD License (2-clause) 128 | * [Hogan.js][hogan] — Apache License v2.0 129 | * [hoverIntent][hoverintent] — MIT or GPLv2 License 130 | * [jQuery][jquery] — MIT License 131 | * [KEYS.css][keyscss] — MIT License 132 | * [Modernizr][modernizr] — MIT or BSD (3-clause) License 133 | * [Mousetrap][mousetrap] — Apache License v2.0 134 | * [TableSorter][tablesorter] — MIT or GPLv2 License 135 | * [Twitter Bootstrap][bootstrap] — Apache License v2.0 136 | * [Underscore.js][underscore] — MIT License 137 | 138 | [backbone]: http://backbonejs.org 139 | [codemirror]: http://codemirror.net 140 | [esprima]: http://esprima.org 141 | [hogan]: http://twitter.github.com/hogan.js/ 142 | [hoverintent]: http://cherne.net/brian/resources/jquery.hoverIntent.html 143 | [jquery]: http://jquery.com 144 | [keyscss]: http://michaelhue.com/keyscss 145 | [modernizr]: http://modernizr.com 146 | [mousetrap]: http://craig.is/killing/mice 147 | [tablesorter]: http://tablesorter.com 148 | [bootstrap]: http://twitter.github.com/bootstrap/ 149 | [underscore]: http://underscorejs.org 150 | -------------------------------------------------------------------------------- /CHANGELOG.markdown: -------------------------------------------------------------------------------- 1 | ## v2.3.11 2 | 3 | * [Fix #167][i167] — bug in rounding when displaying "humanized" sizes. 4 | 5 | [i167]: https://github.com/bobthecow/genghis/issues/167 6 | 7 | 8 | ## v2.3.10 9 | 10 | * [Fix #145][i145], [#148][i148] — work around rack-protection's misguided path decoding. 11 | 12 | [i145]: https://github.com/bobthecow/genghis/issues/145 13 | [i148]: https://github.com/bobthecow/genghis/issues/148 14 | 15 | 16 | ## v2.3.9 17 | 18 | * [Fix #135][i135] — error when entering a `new Date()` value in a document. 19 | * Fix (future) backwards compatibility breaks in the PHP Mongo driver (using `'safe' => true` with `MongoClient`). 20 | 21 | [i135]: https://github.com/bobthecow/genghis/issues/135 22 | 23 | 24 | ## v2.3.8 25 | 26 | * [Fix #130][i130] — Resolve bug creating or editing `ISODate` instances with years between 1 and 99. 27 | * Improve time rendering, prevent microsecond truncation. 28 | 29 | [i130]: https://github.com/bobthecow/genghis/issues/130 30 | 31 | 32 | ## v2.3.7 33 | 34 | * [Fix #126][i126] — Resolve bug editing non-ObjectId `_id` in Ruby 1.8.7. 35 | 36 | [i126]: https://github.com/bobthecow/genghis/issues/126 37 | 38 | 39 | ## v2.3.6 40 | 41 | * Change grippie cursor to `row-resize` — Thanks @Zatsugami. 42 | * Fix "unable to connect" errors for some driver versions (PHP backend) — Thanks @redexp. 43 | * [Fix #117][i117] — Update JSON gem dependency (Ruby backend). 44 | * [Fix #112][i112] — Add support for Sinatra v1.4.0 (Ruby backend). 45 | * Support latest Mongo driver version (Ruby backend). 46 | * Update to latest Bootstrap, CodeMirror, Esprima, Hogan.js, jQuery, Mousetrap and tablesorter vendor libraries. 47 | 48 | [i117]: https://github.com/bobthecow/genghis/issues/117 49 | [i112]: https://github.com/bobthecow/genghis/issues/112 50 | 51 | 52 | ## v2.3.5 53 | 54 | * Improve "remove server" button and confirmation dialog to clarify that this removes settings but not data. 55 | * Expose server error when adding duplicate collection (or GridFS collection) names. 56 | * [Fix #108][i108] — Don't add servers with malformed (or empty) DSNs. 57 | 58 | [i108]: https://github.com/bobthecow/genghis/issues/108 59 | 60 | 61 | ## v2.3.4 62 | 63 | * [Fix #100][i100] — Work around backwards compatibility break in `mongo` gem 1.8.4 (Ruby backend). 64 | 65 | [i100]: https://github.com/bobthecow/genghis/issues/100 66 | 67 | 68 | ## v2.3.3 69 | 70 | * [Fix #105][i105] — Fix bug introduced when rendering DB references. 71 | 72 | [i105]: https://github.com/bobthecow/genghis/issues/105 73 | 74 | 75 | ## v2.3.2 76 | 77 | * [Fix #103][i103] — Properly encode and decode API URI components in Backbone v1.0. 78 | * Clean up page title for non-ObjectId documents. 79 | 80 | [i103]: https://github.com/bobthecow/genghis/issues/103 81 | 82 | 83 | ## v2.3.1 84 | 85 | * [Fix #93][i93] — Skip `bson_ext` and `json` checks for JRuby, et. al. 86 | * Use an explicit ISO date string when saving ISODate values. 87 | * Update to the latest Backbone, Underscore, CodeMirror, jQuery, jQuery hoverIntent and Mousetrap library versions. 88 | * Switch to Rob Garrison's fork of tablesorter. 89 | * [Fix #96][i96] — Ensure document shows up in the editor in Opera. 90 | 91 | [i93]: https://github.com/bobthecow/genghis/issues/93 92 | [i96]: https://github.com/bobthecow/genghis/issues/96 93 | 94 | 95 | ## v2.3.0 96 | 97 | * [Fix #69][i69], [#74][i74] , [#84][i84] and [#91][i91] — Fix errors authenticating against a single database. 98 | * Add detailed database and collection size stats. 99 | * Friendlier "human" size rounding. 100 | * [Fix #89][i89] — Improve handling of databases with invalid names. 101 | * [Fix #90][i90] — Fix error loading server list after adding a malformed server DSN (PHP backend). 102 | * [Fix #81][i81] — Suppress dependency version warnings for (really) old versions of rubygems. 103 | * Fix various and sundry compile errors and edge cases. 104 | * Bump Bootstrap and Mousetrap library versions. 105 | 106 | [i69]: https://github.com/bobthecow/genghis/issues/69 107 | [i74]: https://github.com/bobthecow/genghis/issues/74 108 | [i81]: https://github.com/bobthecow/genghis/issues/81 109 | [i84]: https://github.com/bobthecow/genghis/issues/84 110 | [i89]: https://github.com/bobthecow/genghis/issues/89 111 | [i90]: https://github.com/bobthecow/genghis/issues/90 112 | [i91]: https://github.com/bobthecow/genghis/issues/91 113 | 114 | 115 | ## v2.2.2 116 | 117 | * Fix vertical position of GridFS file creation dialog. 118 | * Pre-fill default `fs` GridFS collection name. 119 | * Add a hotkey for creating a new GridFS collection. 120 | * Improve "create" user experience in tabular views. 121 | * [Fix #79][i79] — Improve hotkey handling. 122 | * Fix disappearing line numbers in editors after using big search box (let defaults stay default). 123 | * Housekeeping. 124 | 125 | [i79]: https://github.com/bobthecow/genghis/issues/79 126 | 127 | 128 | ## v2.2.1 129 | 130 | * Visual refinements. 131 | * The "Restart required" message after installing `bson_ext` should be "info" not "warning" 132 | level (Ruby backend). 133 | * [Fix #78][i78] — error editing and deleting non-ObjectId `_id` values (Ruby backend). 134 | * Add "Add GridFS collection" button to Collections view. 135 | 136 | [i78]: https://github.com/bobthecow/genghis/issues/78 137 | 138 | 139 | ## v2.2.0 140 | 141 | New! 142 | 143 | * Add GridFS upload, drag and drop, navigation and download support. 144 | * Update to v1.8.x MongoDB driver (Ruby backend). 145 | 146 | Bug fixes: 147 | 148 | * [Fix #64][i64] — Allow creating a document with an explicit `_id`. 149 | * Handle Backbone weirdness in docs with both `_id` and `id` properties. 150 | * Fix indent levels in documents with empty objects. 151 | * Stop rejecting all `system*` collections (Ruby backend) — Thanks @ys. 152 | * [Fix #71][i71] — Handle non-ObjectID DBRefs more gracefully. 153 | * [Fix #72][i72] — Surface server error responses when searching. 154 | * Surface even more server error messages. 155 | 156 | Improvements: 157 | 158 | * [Fix #41][i41] — Add an "updated but not restarted" info message (Ruby backend). 159 | * Bump Bootstrap, CodeMirror, Esprima, Hogan.js and Hotkeys vendor libraries — 160 | faster parsing, highlighting and rendering! 161 | * Update to latest versions of jQuery and Underscore.js. 162 | * [Fix #64][i64] — Show an error message when trying to update an `_id` property. 163 | * Surface more error notifications when server goes away and other error cases. 164 | * Handle parse errors in navbar search box. 165 | * Remove dependency on Apprise. 166 | * Update Travis CI config so continuous integration builds are super-ultra-fast! 167 | * Better optimized CSS selectors — shorter selectors, cleaner inheritance, smaller CSS files. 168 | * Detect when `bson_ext` has been installed but `genghisapp` needs a restart (Ruby backend). 169 | * Update `bson_ext` installation nag to include a version number (Ruby backend). 170 | * [Fix #73][i73] — Authenticate against `admin` DB if none is specified (Ruby backend). 171 | * Improve authentication failure error messagine (Ruby backend). 172 | * Improve encoding handling for non-ascii characters in JavaScript assets. 173 | * Ensure that all PHP warnings and notices are propagated to the frontend (PHP backend). 174 | 175 | [i64]: https://github.com/bobthecow/genghis/issues/64 176 | [i71]: https://github.com/bobthecow/genghis/issues/71 177 | [i72]: https://github.com/bobthecow/genghis/issues/72 178 | [i41]: https://github.com/bobthecow/genghis/issues/41 179 | [i73]: https://github.com/bobthecow/genghis/issues/73 180 | 181 | 182 | ## v2.1.6 183 | 184 | * [Fix #55][i55] — Better heuristic for guessing document creation date from ObjectId. 185 | * Catch more connection auth errors (Ruby backend). 186 | * [Fix #16][i16] — Support authenticating directly against a DB for non-admin users. 187 | * [Fix #61][i61] — Make the welcome masthead vertically responsive. 188 | * Source code and asset cleanup. 189 | 190 | [i55]: https://github.com/bobthecow/genghis/issues/55 191 | [i16]: https://github.com/bobthecow/genghis/issues/16 192 | [i61]: https://github.com/bobthecow/genghis/issues/61 193 | 194 | 195 | ## v2.1.5 196 | 197 | * [Fix #46][i46] — Prevent connection errors from messing up `/servers` response (Ruby backend). 198 | * [Fix #42][i42] — Handle `connectTimeoutMS` and `ssl` server options (Ruby backend). 199 | * Cleaner mobile back buttons in WebKit browsers. 200 | * Disable submit button in paranoid db/collection confirm dialog until name is confirmed. 201 | * [Fix #56][i56] — Handle crazy characters in collection names (PHP backend). 202 | 203 | [i46]: https://github.com/bobthecow/genghis/issues/46 204 | [i42]: https://github.com/bobthecow/genghis/issues/42 205 | [i56]: https://github.com/bobthecow/genghis/issues/56 206 | 207 | 208 | ## v2.1.4 209 | 210 | * [Fix #49][i49] — Add warning messages for `magic_quotes_gpc` and `magic_quotes_runtime`. 211 | * [Fix #51][i51] — Work around PHP driver issue with non-scalar ids. 212 | * [Fix #51][i51] — Fix error handling documents with `null` identifiers. 213 | * Make document headers prettier for non-string and non-ObjectId identifiers. 214 | * Handle URI decoding and routing for non-string and non-ObjectId identifiers in some browsers. 215 | * [Fix #44][i44] — Saner connection timeouts. 216 | * [Fix #50][i50] — Fix "add server" regression in PHP. 217 | * [Fix #54][i54] — Never daemonize `genghisapp` for Windows users. 218 | 219 | [i49]: https://github.com/bobthecow/genghis/issues/49 220 | [i51]: https://github.com/bobthecow/genghis/issues/51 221 | [i51]: https://github.com/bobthecow/genghis/issues/51 222 | [i44]: https://github.com/bobthecow/genghis/issues/44 223 | [i50]: https://github.com/bobthecow/genghis/issues/50 224 | [i54]: https://github.com/bobthecow/genghis/issues/54 225 | 226 | 227 | ## v2.1.3 228 | 229 | * Optical correction for masthead background image aspect. 230 | * Use Adobe's beautiful Source Code Pro rather than relying on the default system monospace. 231 | * [Fix #48][i48] — ActiveRecord messes up `DateTime#to_time`. 232 | * [Fix #52][i52] — MongoDate parsing regression in PHP. 233 | 234 | [i48]: https://github.com/bobthecow/genghis/issues/48 235 | [i52]: https://github.com/bobthecow/genghis/issues/52 236 | 237 | 238 | ## v2.1.2 239 | 240 | * Get CI working with Travis, add build status badge to README. 241 | * Fix Genghis asset URI when mounted on a non-root route (thanks Johan Buts). 242 | * Swap out masthead bg image for some CSS3 hotness. 243 | 244 | 245 | ## v2.1.1 246 | 247 | * [Fix #38][i38] — JSON rendering weirdness with empty array properties. 248 | * [Fix #40][i40] — Ruby 1.8.7 regression. 249 | 250 | [i38]: https://github.com/bobthecow/genghis/issues/38 251 | [i40]: https://github.com/bobthecow/genghis/issues/40 252 | 253 | 254 | ## v2.1 255 | 256 | * [Fix #28][i28] — Handle BSON BinData properly in documents and ids. 257 | * [Fix #33][i33] — Remove unexpected collapsed document representation in edit mode. 258 | * [Fix #32][i32] — No more mixed-content warning when Genghis is running over SSL. 259 | * [Fix #35][i35] — No more "Add Server" fail in Ruby. 260 | * Fix — Handle connection auth errors more gracefully. 261 | * Fix — Query bug when running under PHP 5.4 SAPI CLI server. 262 | * Add ObjectId timestamps to document headers. 263 | * Add a sanity check for PHP `date.timezone` settings. 264 | * Add an asset cachebuster param so nobody has to force refresh after updating. 265 | * Add a full API spec. Yey tests! 266 | * Improve consistency between PHP and Ruby APIs. This update brought to you by Full Test Coverage. 267 | * Refactor PHP API. For the children. 268 | * Added `CONTRIBUTING.markdown`. 269 | 270 | [i28]: https://github.com/bobthecow/genghis/issues/28 271 | [i33]: https://github.com/bobthecow/genghis/issues/33 272 | [i32]: https://github.com/bobthecow/genghis/issues/32 273 | [i35]: https://github.com/bobthecow/genghis/issues/35 274 | 275 | 276 | ## v2.0.2 277 | 278 | * [Fix #29][i29] — Don't throw unexpected unary expression error when parsing negative numbers. 279 | * [Fix #22][i22] — Handle high badge counts on nav dropdown. 280 | * [Fix #30][i30] — Weird content clipping when editing really long documents. 281 | 282 | [i29]: https://github.com/bobthecow/genghis/issues/29 283 | [i22]: https://github.com/bobthecow/genghis/issues/22 284 | [i30]: https://github.com/bobthecow/genghis/issues/30 285 | 286 | 287 | ## v2.0.1 288 | 289 | * [Fix #26][i26] — Don't double-encode HTML entities in JSON output. 290 | 291 | [i26]: https://github.com/bobthecow/genghis/issues/26 292 | 293 | 294 | ## v2.0.0 295 | 296 | Brand new features: 297 | 298 | * Genghis doesn't require a webserver! Ghengis.php now runs as a standalone server with the PHP 5.4 CLI SAPI. 299 | * Genghis doesn't require PHP! Introducing Genghis.rb — Thanks @TylerBrock for doing all the work :) 300 | * Add super-simple RubyGems installation. `gem install genghisapp` is the new hotness. 301 | * Add a command line executable / daemon. You're just a `genghisapp` away. How rad is that? 302 | * Add support for pre-configured servers via the `$GENGHIS_SERVERS` environment variable. 303 | * Add support for replica sets, e.g. `localhost:12345/?replicaSet=production`. 304 | 305 | Tons of improvements: 306 | 307 | * Add this CHANGELOG. Meta. 308 | * Genghis now has a more refined visual style — greeeeen! 309 | * More responsive design (check it in a really small window!) 310 | * Epic document parsing and rendering overhaul: 311 | * Huge speed improvements. Rendering, collapsing and scrolling like wow. 312 | * Date, ObjectId and regular expression values (and more) are now formatted (and edited) for humans, not robots. 313 | * Documents are now displayed _and edited_ as Genghis Flavored JSON, a more lenient and intuitive superset of JSON. 314 | * UX Improvements: 315 | * Speed up the initial page load time. 316 | * Update code editor. The new one (CodeMirror) is lighter, faster, smaller and a cleaner implementation. 317 | * Add Cmd+Enter / Ctrl+Enter keyboard shortcut for saving the document being edited. 318 | * Prevent "new document" modal from closing on background click. 319 | * Better "keyboard shortcuts" dialog on smaller screens. 320 | * Require database name confirmation rather than DELETE before removing a db. 321 | * Collection removal is paranoid as well: it also requires confirmation before removing. 322 | * Restore spinning states to most sections — a spinner will show rather than displaying incorrect or outdated info. 323 | * Expando-matic search box. No more squinting or scrolling to see your massive queries. 324 | * Update Bootstrap (2.1.0), jQuery (1.8.0), Underscore (1.3.3), and Backbone (0.9.2). 325 | * Use UglifyJS instead of closure compiler to minify JS. It's faster and doesn't require Java :) 326 | * Mustaches! Now using Hogan.js instead of Underscore templating. 327 | * Check for updates. You can disable this with a `$GENGHIS_NO_UPDATE_CHECK` environment variable. 328 | * Add a welcome screen with project link and version info. 329 | * The README has way more to READ. 330 | * Spun off Bootstrappy styles for Apprise into their own project. [Check it out!](https://github.com/bobthecow/apprise-bootstrap) 331 | * All this while reducing the codebase by about 10%. BOOM. 332 | 333 | And a handful of bug fixes: 334 | 335 | * [Fix #19][i19] — Only implicitly wrap MongoIds if they're 24 character hex strings. 336 | * [Fix #20][i20] — Support creating and editing documents with an `attributes` property. 337 | * Fix output glitches when displaying a brand new document immediately after an existing document. 338 | * Fix — possible JavaScript error when adding a new collection. 339 | * Fix — handful of rare (and relatively benign) error messages. 340 | * Fix — malformed server DSN could prevent servers list from rendering. 341 | * Fix — rare bug where properties with a specific structure might be mistaken for ObjectIds or Dates. 342 | * Fix — no longer recreates missing dbs and collections on GET requests. 343 | * Fix — all sorts of things now 404 if they're missing, rather than rendering an empty page. 344 | * Fix — assorted issues with running in subdirectories, and under nginx. 345 | * Improve error handling in a couple of places. 346 | 347 | [i19]: https://github.com/bobthecow/genghis/issues/19 348 | [i20]: https://github.com/bobthecow/genghis/issues/20 349 | 350 | 351 | ## v1.4.2 352 | 353 | * Mention the PECL driver dependency. 354 | * Fix regressions with the search box. 355 | * Fix auto-collapsing documents when there are a bunch. 356 | * Escape HTML in folded document summaries. 357 | 358 | 359 | ## v1.4.1 360 | 361 | * Update to Bootstrap v2.0.2. 362 | * Fix error message regression when PECL Mongo driver isn't present. 363 | * Fix missing CSS from the keyboard shortcuts help dialog. 364 | * Minor cleanup. 365 | 366 | 367 | ## v1.4.0 368 | 369 | * Add a keyboard shortcuts note to the footer. 370 | * Namespace PHP classes. 371 | * Improve document folding (style *and* performance!). 372 | 373 | 374 | ## v1.3.0 375 | 376 | Genghis v1.3.0: Now with KEYBOARD SHORTCUTS! 377 | 378 | 379 | ## v1.2.0 380 | 381 | * Update to Bootstrap v2.0.1. 382 | * Work around bug with PECL Mongo driver < 1.0.11. 383 | 384 | 385 | ## v1.1.0 386 | 387 | * Add authentication support. 388 | * Expose additional details in server, database and collection rows. 389 | 390 | 391 | ## v1.0.3 392 | 393 | Add a version number to docblocks and built packages. 394 | 395 | 396 | ## v1.0.2 397 | 398 | Update to Bootstrap v1.4.0. 399 | 400 | 401 | ## v1.0.1 402 | 403 | Fix an `E_STRICT` error in asset mime-type guessing. 404 | 405 | 406 | ## v1.0.0 407 | 408 | Initial release. 409 | --------------------------------------------------------------------------------