goobox / goobox-community-gui Goto Github PK
View Code? Open in Web Editor NEWDesktop community syncing client for Sia and Storj (DApp)
License: GNU General Public License v3.0
Desktop community syncing client for Sia and Storj (DApp)
License: GNU General Public License v3.0
This is easier to implement than a tray icon with a overlay and much better visible. Dropbox does this now too. We still have to think of the color code we should use. I think dropbox uses blue for synchronizing and white for done synchronizing. We could implement a similar strategy. @Eliomendes , could you provide us with a blue tray icon, thanks.
Some strange errors also happen:
[13160:1228/161852.855:ERROR:gles2_cmd_decoder.cc(17403)] [.DisplayCompositor-0000000005CC4910]GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name
[13160:1228/161852.856:ERROR:gles2_cmd_decoder.cc(9636)] [.DisplayCompositor-0000000005CC4910]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
Launching goobox.exe
shows a security warning for unknown publisher:
We should use the code signing feature of electron builder.
More and more consumer computers have 2-4k screens which can cause app scalability issues on the respective systems (mainly windows) which can for example cause the settings or any pop-up window to be very small.
The icons look much crisper if they have a higher resolution. The standard tray icon doesn't look crisp on a 1080p display on windows and completely awful on a 4k display. Other option would be to set the 3x only for machines with a 4k display.
The tray icons are outdated, new ones are here: https://github.com/GooBox/brand-design/tree/master/Tray_status_icons
Since we are running up on close to 100MB worth of data for the app, we should consider allowing the user to download say a 2-10 MB executable and then the app downloads the rest of the data necessary for the app at start. Something like google chrome does:
Though this is not vital right now, it does increase user experience as most users don't like downloading large executables.
When i go to register an account and enter a email address that is already registered or invalid, then click back and next again, it takes me to the login screen but still shows me the text from the registration screen with the error. The app should update the text to the default text of the screen in that case (reset it).
BrowserWindow -> skipTaskbar: true
Although we should inform the user for the update and ask them to install it, we should carry out the installation for them, like FileZilla does. I think dropbox just installs updates automatically, though that might bring some security issues with it. Both options can be considered.
Right now it doesn't show the user which path is selected which will cause questions like "mnn did i selected the path or not?".
Solution: Add the path selected as text centered below the "browse..." box. Text-> white, same size as "Don't have an account?" in the Storj screen.
Spacing can be the same as the one here:
Clicking it does nothing at the moment, not sure if this is intended or not but it used to work in one of the earlier versions.
This can be implemented as a simple notification. We have to do this in order to prevent the user(s) from loosing their files. E.g. we can give them a warning 7 days before the funds run-out.
related to GooBox/goobox-sync-storj#45. This will improve UX.
When right clicking on the tray icon -> exit nothing happens and i get the following terminal output:
[13:26:50.425] [debug] ΓÇöΓÇö log end ΓÇöΓÇö
[13:27:02.210] [info] closing the sync-sia app
ERROR: The process "5316" not found.
(node:17388) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 9): Error: Command failed: taskkill /pid 5316 /T /F
ERROR: The process "5316" not found.
[13:27:20.544] [debug] Sending @IPC/CalculateUsedVolume request
[13:27:20.547] [debug] Received a @IPC/CalculateUsedVolume request: null
[13:27:20.569] [info] Calculating volume size of C:\Users\meije\Goobox: 0GB
[13:27:20.570] [debug] Sending a successful response for @IPC/CalculateUsedVolume request: null
[13:27:20.602] [debug] Received an successful response for the @IPC/CalculateUsedVolume request: 0
[13:27:20.608] [debug] action %cSetVolumeSize %c@ 13:27:20.599
[13:27:20.629] [debug] %c prev state color: #9E9E9E; font-weight: bold { disabled: false,
state: 'synchronizing',
totalVolume: 50,
usedVolume: 0 }
[13:27:20.639] [debug] %c action color: #03A9F4; font-weight: bold { payload: 0, type: 'SetVolumeSize' }
[13:27:20.656] [debug] %c next state color: #4CAF50; font-weight: bold { disabled: false,
state: 'synchronizing',
totalVolume: 50,
usedVolume: 0 }
[13:27:20.683] [debug] ΓÇöΓÇö log end ΓÇöΓÇö
This way users require less clicks to get to goobox which improves overall app experience.
If a user logs in from another machine with a password and email address but uses a wrong seed, the app won't be able to decrypt the bucket or decrypt the files, which will result in errors. The app should check if it can decrypt the bucket or not, if it can't, it should prompt the user that he or she entered a wrong seed and should try entering the correct seed,
Today I launched the GUI for first time ever and I got dialogs appear with the Chrome Dev Console on by default. This is valid for both the Installer and the Tray Popup. See the attached screenshots.
I could easily close the dev console by clicking on the X button, but it's quite confusing to have it.
If i start the app a second time after the "getting some tools" screen it will render the screen for about 1 second. But this is not necessary because the tools (JRE) have already been installed previously.
I have two UX issues with the mouse cursor in the GUI:
This includes the tray icon with appropriate status overlays and the desktop icon(s). We will have to check with icon fits best for each OS and which one is the nicest in general.
Work with the designer to implement the setup GUI for the goobox community app.
2018-01-17 11:13:13 [main] DEBUG net.harawata.appdirs.AppDirsFactory - os.name windows 10 is resolved to Windows
2018-01-17 11:13:13 [main] INFO io.goobox.sync.storj.db.DB - Resetting sync DB
2018-01-17 11:13:13 [main] DEBUG net.harawata.appdirs.AppDirsFactory - os.name windows 10 is resolved to Windows
2018-01-17 11:13:13 [main] DEBUG net.harawata.appdirs.AppDirsFactory - os.name windows 10 is resolved to Windows
2018-01-17 11:13:13 [main] INFO io.goobox.sync.storj.App - Checking if local Goobox sync folder exists
2018-01-17 11:13:13 [main] INFO io.goobox.sync.storj.App - Folder exists
2018-01-17 11:13:13 [main] INFO io.goobox.sync.storj.App - Checking if Goobox data folder exists
2018-01-17 11:13:13 [main] DEBUG net.harawata.appdirs.AppDirsFactory - os.name windows 10 is resolved to Windows
2018-01-17 11:13:13 [main] INFO io.goobox.sync.storj.App - Folder exists
2018-01-17 11:13:13 [main] INFO io.goobox.sync.storj.App - Checking if cloud Goobox bucket exists
2018-01-17 11:13:13 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:13 [Thread-0] DEBUG io.goobox.sync.storj.ipc.IpcExecutor - Command input received: {"method":"createAccount","args":{"email":"mesdfsd.sdfsd","password":"dasdas"}}
2018-01-17 11:13:13 [Thread-0] DEBUG io.goobox.sync.storj.ipc.IpcExecutor - Command result sent: {"status":"error","message":"Invalid email"}
2018-01-17 11:13:16 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:19 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:22 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:25 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:28 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:31 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:34 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:37 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:40 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:43 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:46 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:49 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
2018-01-17 11:13:52 [main] ERROR io.goobox.sync.storj.App - No keys found. Waiting for keys to be imported.
This to ensure users know when they are close to running out of funds. Use clicks on the tray icon and then settings -> billing.
maybe adding a ETA until funds run out would also be cool.
This should be included as a setting and should be enabled by default.
This makes the installer simpler and look more clean.
Icons can be found here: https://github.com/GooBox/brand-design/tree/master/sync_dir_icons. I discussed about this with @kaloyan-raev a few days ago.
Initially we can include some of the same (and basic) options other apps like Dropbox offer, which includes
After the basic implementation we should aim at for example display the SIA, Storj or SIA + Storj account details in Account
, this includes wallet address, amount of funds on the address, spending info, seed, passwords...
This is where the Storj and SIA back-ends should be integrated to ensure that each individual repo can function in the app in harmony together with the other repo. This is especially important to get right for users that use Storj + Sia to avoid conflict.
If for some reason sync-Storj or Sync-SIA crashes, it should try to restart it after a few seconds or so and output the restart even (with reason for restart) to the logs which will allow us to troubleshoot. This to ensure that when users run the GUI and sync-storj or sync-SIA crashes, that they don't keep running a app that won't sync.
Later down the line adding something like a notification of failure to start would be a good one.
We should also not allow users to go above of the available funds and send a notification to settings -> notifications once they get close to using up all the funds.
It would be a cool feature for later down the road to automatically create a screenshots
folder in the sync folder to which screenshots are saved.
Right now if i stay on the wallet screen for too long without pressing next (even though i can), i get the message that the account is setup correctly, then when i get to the last screen it says that the app is getting sia ready, though i already got the notification. This might confuse people as they might think they are supposed to get a notification after they close the installer, not realizing the message they received was already the "your account is ready" message.
[02:59:48.906] [verbose] Java HotSpot(TM) 64-Bit Server VM warning: Option CreateMinidumpOnCrash was deprecated in version 9.0 and will likely be removed in a future release. Use option CreateCoredumpOnCrash instead.
[02:59:49.302] [verbose] SLF4J: A number (1) of logging calls during the initialization phase have been intercepted and are
[02:59:49.302] [verbose] SLF4J: now being replayed. These are subject to the filtering rules of the underlying logging system.
[02:59:49.306] [verbose] SLF4J: See also http://www.slf4j.org/codes.html#replay
[02:59:49.506] [verbose] WARNING: An illegal reflective access operation has occurred
[02:59:49.506] [verbose] WARNING: Illegal reflective access by dorkbox.systemTray.util.SystemTrayFixes (file:/C:/Users/meije/Downloads/goobox-win32-x64%20(1)/goobox-win32-x64/resources/app/goobox-sync-storj/goobox-sync-storj-0.0.13.jar) to method java.lang.ClassLoader.findLoadedClass(java.lang.String)
[02:59:49.511] [verbose] WARNING: Please consider reporting this to the maintainers of dorkbox.systemTray.util.SystemTrayFixes
[02:59:49.530] [verbose] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
[02:59:49.536] [verbose] WARNING: All illegal access operations will be denied in a future release
[03:00:10.638] [error] Cannot parse #: SyntaxError: Unexpected token # in JSON at position 0
[03:00:25.354] [error] Cannot parse #: SyntaxError: Unexpected token # in JSON at position 0
[03:00:28.460] [info] logging in to Storj: [email protected]
[03:00:28.460] [debug] sending a request to sync storj: {"method":"login","args":{"email":"[email protected]","password":"","encryptionKey":""}}
[03:00:28.463] [error] Error: This socket has been ended by the other party
at Socket.writeAfterFIN [as write] (net.js:305:12)
at Promise.race.resolve (C:\Users\meije\Downloads\goobox-win32-x64 (1)\goobox-win32-x64\resources\app\lib\main-process\startup.js:21099:18)
at Promise (<anonymous>)
at Storj.login (C:\Users\meije\Downloads\goobox-win32-x64 (1)\goobox-win32-x64\resources\app\lib\main-process\startup.js:21086:26)
at EventEmitter._electron.ipcMain.on (C:\Users\meije\Downloads\goobox-win32-x64 (1)\goobox-win32-x64\resources\app\lib\main-process\startup.js:20575:26)
at emitTwo (events.js:106:13)
at EventEmitter.emit (events.js:194:7)
at WebContents.<anonymous> (C:\Users\meije\Downloads\goobox-win32-x64 (1)\goobox-win32-x64\resources\electron.asar\browser\api\web-contents.js:247:13)
at emitTwo (events.js:106:13)
at WebContents.emit (events.js:194:7)
[03:00:29.680] [error] { code: 'EPIPE' }
How to reproduce: click on finish while the app is thinking.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.