Feature Spec - Studio3T/robomongo GitHub Wiki
Robo 3T Feature Specisification
Discuss: Move this doc. to -> under /doc/ when stable ?
Todo: Add more from config file
Useful Links:
https://github.com/Studio3T/robomongo/wiki/Robomongo-Config-File
Features added in Robo 1.4
More: https://blog.robomongo.org/robo-3t-1-4/
// From URI Feature
- Connection Settings dialog -> Connection tab now has "From URI" button/feature (previously "From SRV").
- With this change, "Standard Connection String Format" support added (in addition to SRV).
- So currently, "Standard Connection String Format" and "SRV" URI strings are supported for Standalone and Replica Set configs.
Feature Details:
Every time From URI Button clicked, the followings will happen:
- First, Mongo URI string (e.g. mongodb://mongodb0.example.com:27017) is parsed.
- If something is wrong with URI format, user will be notified with error message coming from MongoDB code.
- All tabs except SSH tab will be cleared or set back to default values.
- All tabs except SSH tab will be set from what is parsed from URI.
- Supported UI items:
. Connection tab: Type, Address/Port, Members, Set Name
. Auth tab: All items except "Manually visible databases"
. TLS tab: All items except "CRL" and "Ask for passphrase each time"
. Advanced tab
Ref: https://docs.mongodb.com/manual/reference/connection-string/
// Disable SSH tab for new and existing replica set connections
And new tooltip message for Use SSH tunnel
checkbox - should also be visible only for Replica Set connections: "SSH is currently not supported for Replica Set connections"
// Force light mode on macOS (#1761, #1768, #1771)
Robo should start in light mode when macOS is in light or dark mode
// ExplorerWidget has smaller default width + Remember ExplorerWidget size
Details:
- https://github.com/Studio3T/robomongo/issues/1556
- https://github.com/Studio3T/robomongo/blob/master/schematics/main_window.jpg
// Import keys from old version
Import these keys from old version:
autoExpand, lineNumbers, debugMode and shellTimeoutSec
// New Welcome Tab (for Windows, macOS)
Details in "Welcome Tab" section
// Build number
In Menu -> About window, there should be a build number and MM/YYYY next to Robo version.
e.g. Robo 3T 1.4.3 (Build 122dbd9 - 1/2021)
for installer robo3t-1.4.1-darwin-x86_64-122dbd9.dmg
.
// In app download URL
Organic (e.g. google) visitors should hit www.robomongo.org/download, while users from the app www.robomongo.org/download/download?inappupdate
// SSH: ECDSA and Ed25519 keys support (Windows & macOS only)
SSH connection from Windows and macOS should work with ECDSA and Ed25519 keys.
Note: Linux box (e.g. Ubuntu) might be preferred as an SSH Server.
// disableHttpsFeatures flag (config file)
Designed to be modified only by human users
Disables https related features (gets/posts/pages/forms)
When true:
-
Don't show eula dialog form (2nd) page
. Delete/rename config file
. Start Robo
. Select Cancel on Eula dialog
. Change disableHttpsFeatures to true
. Re-start Robo, Eula dialog form (2nd page) should not be shown -
Update bar: Don't check for updates (even when "checkForUpdates" : true)
-
Menu -> Open Welcome Tab item should not be visible
-
Welcome Tab will not be opened at program startup
-
Welcome Tab text, image or rss should not be downloaded (delete/rename cache folder before opening Robo)
// Manually visible dbs
Manually specify visible databases section connection settings auth. tab (#1696)
-
Used for this problem:
. How to reproduce: create non-admin user for a database on Mongo Atlas. Connect w/ Robo, no dbs will be visible. -
Check
. Robo force shows the dbs user entered even they don't exist, we trust the user here
. When "Manually specify visible databases" option disabled and listdatabases command fails, This warning window/hint is shown to user: "Warning: listdatabases failed Hint: If this user has access to a specific database, please use "Manually specify visible databases" option in Connection Settings window -> Authentication tab."
Features added in Robo 1.3
More: https://blog.robomongo.org/robo-3t-1-3
// Importing from MongoDB SRV connection strings
All Robo 3T connection settings tabs should be updated correctly.
Example MongoDB SRV connection strings:
mongodb+srv://admin:[email protected]/test
// Query results windows now supports tabbed output #1591 #1403
- Tabbed output should be acivated when there are 3 or more statements in a query.
- When statements count is 1 or 2, the result should be non-tabbed (side-by-side) so that the user can see/compare results more easily
// Support for SCRAM-SHA-256 auth mechanism
Users created with auth mechanism SCRAM-SHA-256 should be able to connect to server
// Encrypted passwords are used in config. file instead of clear text passwords
Encrpyted passwords feature will appply to 4 parameters in config file:
- Main connection (MongoDB) password
- SSH password & passphrase
- SSL PEM passphrase
- An example of encrypted passwords in Robo 3T 1.3 config file can be seen below:
robo3T.json:
...
{
"connectionName" : "atlas",
"credentials" : [
{
...
"mechanism" : "SCRAM-SHA-256",
"userName" : "admin",
"userPasswordEncrypted" : "AwL8SywX8c0=" <-- MongoDB password
}
],
...
"ssh" : {
...
"method" : "publickey",
"passphraseEncrypted" : "AwJyY9PvDQ==", <-- SSH passphrase
"port" : 22,
...
"userName" : "admin",
"userPasswordEncrypted" : "AwKdhGVYuw==" <-- SSH password
},
"ssl" : {
...
"pemKeyFile" : "",
"pemPassPhraseEncrypted" : "AwIGSdjjFC8", <-- SSL PEM passphrase
...
},
...
},
...
Features added in Robo 1.2
More: https://blog.robomongo.org/robo-3t-1-2/
// Paging support for aggregate queries
Paging should work for aggregate queries
Features added in Robo 1.1
More: https://blog.robomongo.org/robomongo-is-robo-3t/
// Shell Timeout
Run a long query that times out (e.g. add 4000 objects)
Confirm query failed and change timeout dialog prompted to user
Change timeout
Check document object count
Re-run timed out query, confirm query finished with success
Re-check document object count (e.g. to see all object are added)
Close/open Robo check config file has correct value e.g. "shellTimeoutSec" : 15,
// NumberDecimal (Decimal128) Support
NumberDecimal (Decimal128) is added as new data type in MongoDB 3.4.
Examples of Usage:
- The NumberDecimal("") constructor accepts the decimal value as a string:
db.getCollection('Bills').insert({ "Jan": NumberDecimal("1000.55") })
- The value is stored in the database as follows:
NumberDecimal("1000.55")
- UI: In results window type should be
Decimal128
- UI: In Edit Document window object should be:
"Jan": NumberDecimal("1000.55")
// JavaScript ES2015 (ES6) Support
This query should work:
const x = 3; // "const" from ES2015
db.getCollection('aa').find({}).limit(x);
Feature added in Robo 1.0
More: https://blog.robomongo.org/robomongo-1-0/
// Update bar (HTTPS)
Info:
- First check for updates 30 secs after program start
- Check for updates every 1 hour
- Check for updates 1 second after menu item "Options -> Check For Updates" selected (* Added in v1.4)
Cases:
- UI: Changing Menu item "Options -> Check For Updates should enable/disable this feature
- Changing flag <"checkForUpdates" : true> should enable/disable this feature
URL: Example query for v1.4.1:
https://updates.3t.io/check.php?os=win&softwareId=8&softwareVersion=1.4.1&licenseInfo=FREE&setup=d7bfab48-0f34-4c28-a172-
0efbcb0ac581¬ify=true#
Code:
MainWindow::checkUpdates()
// Welcome Tab (HTTPS)
For Windows, macOS: (Added in v1.4.3)
Welcome Tab works/looks entirely different in Windows and macOS.
It embeds and acts like Chromium Web browser.
Checks:
- Right click/context menu should be disabled
- Clicks to links should be forwarded to external browser (e.g. Chrome)
For Linux:
See: https://github.com/Studio3T/robomongo/wiki/How-Welcome-Tab-works
Download URLs for v1.4.0:
pic URL = https://files.studio3t.com/rm-feed_3t_io/1.4.0/image.png
text URL = http://files.studio3t.com/rm-feed_3t_io/1.4.0/contents.txt
rss URL = https://blog.robomongo.org/rss/
Use Cases:
1> HTTPS download
Delete/rename cache folder: ~/.3T/robo3t/1.x.y/cache
Open Robo
~/.3T/robo3t/1.x.y/cache/ folder should be created
~/.3T/robo3t/1.x.y/cache/ following files should be created with correct content
. rss.xml
. contents.txt
. image.png
In config. file, following timestamps (last modified dates in server) should be created:
...
"cacheData" : {
"wtImage1LastModifiedDate" : "2019-05-03T10:16:17Z",
"wtRssLastModifiedDate" : "NotImplemented",
"wtText1LastModifiedDate" : "2020-02-04T11:05:06Z"
},
Ref image: https://github.com/Studio3T/robomongo/wiki/How-Welcome-Tab-works
2> Loading from cache folder
Disable internet
Welcome Tab should load from cache and should work as expected
3> It should be possible to open Welcome Tab again after closing or refresh existing Welcome Tab content from "Window -> Open/Refresh Welcome Tab" menu item
// Eula Dialog (HTTPS) aka Welcome Wizard
-
Form (user data) should be sent
When:
. At least email must be filled
. disableHttpsFeatures is false & programExitedNormally is true
. Note: Ask 3T to provide form received email or use wireshark to verify form sent/received -
URL info: https://rm-form.3t.io/
Features added in older versions
// SSH
- PPK keys are not supported, they must be converted to OPENSSH format.
// Import connections
-
Todo: Should we also import some flags?
-
Main
. Connections are imported from old config file -
These flags should have these default values after or w/o import:
programExitedNormally = true;
disableHttpsFeatures = false;
checkForUpdates = true;
// Style & Fonts
- Close Robo
- Change these values in config file
- Confirm overall style of program changed
- Confirm font of query section and result in text mode changed
"style" : "Native",
"textFontFamily" : "",
"textFontPointSize" : -1,
// IPv6
-
Main
. When started from command line withrobo3t --ipv6
option, Robo should connect to db server using IPv6 addresses
. Db server must also be started with--ipv6
option -
Basic checks:
. Connect to local server with::1
(which islocalhost
in IPv6)
. Connect to local server with IP address using IPv6 format (e.g.192.168.100.15
in IPv6 is0:0:0:0:0:ffff:c0a8:640f
)
. Todo: How to connect to Mongo Atlas with IPv6? -
Working example for mongo shell:
mongod --dbpath E:\data\4.2 --bind_ip_all --ipv6
mongo --ipv6 --host ::1
- Related mongo shell feature:
mongo -h
MongoDB shell version v4.2.6
--ipv6 enable IPv6 support (disabled by default)
// programExitedNormally flag
-
Main:
Start Robo
Kill/End process Robo
programExitedNormally should be false
Start Robo
Close Robo
Check programExitedNormally is true -
When false, Eula dialog form (2nd) page should not be shown
Delete/rename config file
Open Robo
Select Cancel on Eula dialog
Change programExitedNormally to false
Open Robo
Check Eula dialog form (2nd) page is not shown
// "batchSize" : 50
- Change this to 10, Robo should show 10 documents by default when a collection double clicked.
// mongo.rc
todo
// Default db
Change default db e.g. yy
Open shell from "Connection Icon", not from any db