vitrine-app / vitrine Goto Github PK
View Code? Open in Web Editor NEWCentralize all of your games within a simple interface.
License: MIT License
Centralize all of your games within a simple interface.
License: MIT License
As among others packages, Electron has been updated to a new version, 2.0.0.
This update comes with some breaking changes since it's a major release.
Therefore, this new version should be adopted, along with the others dependencies (listed here).
Styled Components is shaped for React, offers a better layer of abstraction than Aphrodite does. It will allows us to use keyframes properly, to get rid of css-verbose
and also to use props and state to dynamically change styling.
The actual direction Vitrine development is to open it to the open-source community. This is being achieved by code linter, precommits tasks, updating documentation, etc.
The next step is to provided meaningful release notes.
Using the regWatcher
native Node module to monitor Steam games is only working on Windows, because it's using the registry keys. As Steam Linux using basic filesystem to update games monitoring, a cross-platform version of this module should be created in order to monitor Steam games.
Upon deleting a game, it appears that the game is still selected on the screen, althought it should be removed.
When I select my steam folder, the app crash?
And if I re-launch it, it crash again
Error: ENOENT: no such file or directory, open 'S:\STEAM\steamapps\config\loginusers.vdf'
at Object.fs.openSync (fs.js:646:18)
at Object.module.(anonymous function) [as openSync] (ELECTRON_ASAR.js:166:20)
at Object.fs.readFileSync (fs.js:551:33)
at Object.fs.readFileSync (ELECTRON_ASAR.js:538:29)
at new e (C:\Users\guigur\AppData\Local\Programs\Vitrine\resources\app.asar\public\webpack:\sources\server\api\AcfParser.ts:15:15)
at e.setSteamConfig (C:\Users\guigur\AppData\Local\Programs\Vitrine\resources\app.asar\public\webpack:\sources\server\api\SteamUserFinder.ts:14:25)
at C:\Users\guigur\AppData\Local\Programs\Vitrine\resources\app.asar\public\webpack:\sources\server\api\SteamUserFinder.ts:44:19
at new Promise (<anonymous>)
at Object.t.findSteamUser (C:\Users\guigur\AppData\Local\Programs\Vitrine\resources\app.asar\public\webpack:\sources\server\api\SteamUserFinder.ts:43:9)
at e.<anonymous> (C:\Users\guigur\AppData\Local\Programs\Vitrine\resources\app.asar\public\webpack:\sources\server\Server.ts:104:35)
at C:\Users\guigur\AppData\Local\Programs\Vitrine\resources\app.asar\public\webpack:\node_modules\bluebird\js\release\promise.js:773:1
at Object.next (C:\Users\guigur\AppData\Local\Programs\Vitrine\resources\app.asar\public\webpack:\node_modules\bluebird\js\release\promise.js:773:1)
at C:\Users\guigur\AppData\Local\Programs\Vitrine\resources\app.asar\public\webpack:\node_modules\bluebird\js\release\promise.js:773:1
at new Promise (<anonymous>)
at r (C:\Users\guigur\AppData\Local\Programs\Vitrine\resources\app.asar\public\webpack:\node_modules\bluebird\js\release\promise.js:773:1)
at e.clientSettingsAsked (C:\Users\guigur\AppData\Local\Programs\Vitrine\resources\app.asar\public\webpack:\sources\server\Server.ts:95:2)
Native modules don't seem to be compiled properly, they cannot be found during the tests on Windows.
It would be interresting (not necessarily soon) to add a stats features to display graphs about the time spend on games (which games, from which developer/publisher, which genre, ...)
Semantic UI is a great toolkit, but it would be better to improve it to make it smoother and to have a really unique UI
When I add every game at one time:
When changing language, application reboot is necessary. However, when Vitrine reboot, the language doesn't change.
vitrine_config.json
gives the correct key, however the settings modal still display the first language.
Electron 3.0.0 just came out, switching to Node.js 10 and fixing some security breaches. That would be an interesting idea to upgrade, as well as the rest of the dependencies.
The whole point of Vitrine is to centralize every game on the user computer. The main argument of this kind of softwares is that the games can be sorted thanks to different parameters (release date, note, genre, developper, etc.), previously fetched on IGDB.
The first step before sorting the games on the client (probably using Redux) is to use games genres as actual data and not just strings. Maybe a genres
array could be added to modules_config.json
and every game's config.json
could just refer to one of multiple IDs pointing to this array.
That could be interesting to have an option in the settings to start Vitrine at computer start
When Vitrine scans for Steam games and add them as PotentialGames
, renaming before adding it will result in the game still mentionned as a PotentialGame
, although being already added.
This can be surely solved in the SteamGamesCrawler
by comparing Steam app ID.
Upon using Vitrine with a gamepad (Xbox 360 controller in this case), the software can still be used althought the window is not focused. This is particularly problematical when playing to a game when a controller and Vitrine still fires events 3 times per second because of inputs.
As many games can be played with a controller on Vitrine, it will be a good idea to add gamepad support to use it on Vitrine.
The goal of Vitrine is to be cross-platform. As we can say it's definitely not the case for the moment (as every module was developped for and on Windows), the first step in the process is to allow the built of the native Node.js C++ addons.
The build system is using node-gyp
which is cross-platform, so the only difficulty is to create an execution script that works regardless of the platform (Batch file, Bash script...).
shelljs
seems to be a good compromise to execute Bash scripts on Windows.
IGDB API seems to suffers from lags, maintenances or other timeouts.
These timeouts should be handled in Vitrine to prevent infinite loadings which prevent the UI from being updated.
One good way to do that should be to use Promise.race
between the IGDB client method and setTimeout
.
But I'm logged wtf.
Every class extending PotentialGamesCrawler
needs some arbitrary data that is assumed static (configFilePath
for Battle.net, launchCommand
and gamesFolders
for Steam, etc.).
For the moment, these informations are directly set inside Server
and are re-evaluated and re-outputted everytime the user updates his modules. A way should be found in order to store this data in static files (JSON probably) for them to be requested in time and not re-writted everytime.
Vitrine s'est mis a jour vers 0.9.3
le soft a redémarrer mais ne s'est pas utilisable. il tourne en background et même en le kill la fenêtre n’apparaît pas.
j'ai supprimer appdata vitrine mais ça ne change rien
Les logs sont vides Vitrine log [ 03/10 07:41:27 ] Starting logging.
Vitrine is using different API keys (Discord, Steam, IGDB, ...).
Currently their are stored in a C++ header file used to build the keysProvider
native addon.
This is made this way so people using Vitrine production built don't have access to plain keys.
However, keys shouldn't be accessed by anyone on a GitHub repo, but are still needed by CI to build production artifacts.
A solution should be found (probably using an env variable) to store encrypted variables on the repo and to decipher them at build process.
When having 20+ potential games found, it can be very boring to add them one after the other.
A feature should be provided to add every potential game at once.
Whenever a Steam game is added for the first time, Vitrine will crash if Steam module was turned on during the session.
A way to fix that would be to check for Steam user ID whenever a Steam config is uploaded to server.
Upon adding a game from Steam, its time played will established from Steam API. However, if the game is played on another computer, the time played will never be updated.
A solution will be to add an automated task at Vitrine launch to refresh Steam games play times.
If I set up a list of emulators and I disable emulators module, then turn it back, all emulators are disabled.
When Steam for example, or any other software that requires an admin elevation to be executed is being run through Vitrine it crashes.
I believe it comes from the gameLauncher
native module, which is using the CreateProcess
function from the C++ WINAPI.
It should be changed to another shell function in order to handle games that needs admin elevation.
Every time a potential game is found, a new request is done on IGDB API to get the game name and cover picture. This system is really expensive in both terms of IGDB API requests number (since they are capped) and performance (each request lasts multiple ms).
Plus, everytime a potential game is added, the rest of the potential games are once again found on the computer and sent to IGDB API, which can lead to 100+ requests in 10 seconds.
A solution to solve that would be to "cache" the potential games using a file.
Right now, Vitrine logic assumes that the Internet connection is always valid in order to perform requests (into IGDB API, Steam Web or Google Translate).
This should be changed in order to:
I'm using windows I have just installed it but when I run it says looking for updates and then starts launching for ever.
I don't know if this will be of any help, but if I run the app again after closing it with alt+f4 or while still opened it opens a window with just a grey background.
I would really like to test and use the app, is there anything I should try to make it work on my side or shuold I just wait for a fix?
Whenever Vitrine is launching on Windows, an error occur: steamMonitor: module did not register
. It appears to be linked to native C++ addons which are cross-platform now, since they work perfectly on Linux.
When activating the Battle.net module, this error shows up:
Error: ENOENT: no such file or directory, open 'C:\Users\Paul\AppData\Roaming\Battle.net\Battle.net.config'
Not having any Battle.net games shouldn't allow the application to crash.
ES7 async
/await
is a great way to provide a clean code while use asynchronous promises.
As TypeScript is compatible with this feature, the whole source code of Vitrine should be adopting this code style in order to be much cleaner.
React 16.3 came out last week, with branding Context
API but most of all the deprecation of componentWillMount
, componentWillReceiveProps
and componentWillUpdate
.
Vitrine should be updated to use React 16.3 and embrase the new components lifecycle .
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.