ownfoil icon indicating copy to clipboard operation
ownfoil copied to clipboard

Release v2.0.0

Open a1ex4 opened this issue 9 months ago • 5 comments

Ownfoil v2 is a complete rewrite of the project, using a web framework that allows much more flexibility. Instead of generating a static shop file (custom .tfl index) and serving it with Nginx, the shop is now directly served with an HTTP API when Tinfoil connects. It is far from completed, but should address all the main issues with the current implementation. It's available in the v2 branch.

The main advantages of the v2 are:

  • Library is scanned each time the shop is accessed
  • The shop is served with an HTTP API endpoint, no more writing to a file in the library, hence no permission issue
  • Settings and user creation is all done through a Web UI
  • The library can be viewed from the Web UI

Roadmap to release

In no particular order, things left to do before releasing Ownfoil v2:

  • [x] Shop generation and Tinfoil access working
  • [x] App settings saved and read from a file in /config/settings.yaml
  • [x] Auth: setup user based permissions (Shop Access, Backup Access, Admin Access)
  • [x] Library: download titledb files on first run (git clone)
  • [x] Dockerize it
  • [x] Github actions
  • [x] Auth: Private / public shop
  • [x] Auth: add warning if no Admin user exists
  • [x] Library scan: use console keys to decrypt and identify files
  • [x] Upload and validate console keys through the UI
  • [x] Auth: Private / public library view
  • [x] Auth: finish login page
  • [x] Auth: admin user has all rights, not just "admin"
  • [x] Backend: fork updated NSC_builder and include as a submodule / publish on pypi
  • [x] Library view: add dropdown with select filters (up to date, out of date, base, dlc)
  • [x] Library view: add DLC update status
  • [x] Library view: add missing DLC status
  • [x] Server: try running behind reverse proxy with HTTPS
  • [x] Library: implement titles.json generation from all files
  • [ ] Auth: ability to change user password/permissions
  • [ ] UI: Add toast notification for every API call
  • [ ] Library view: add tooltip for version information
  • [ ] Server: add server port as an app setting
  • [ ] Library: regularly update titledb
  • [ ] Library: rename files according to template
  • [ ] Library access: use random uid instead of db index
  • [ ] Library scan: add file watcher on the library path to update the db each change (added/renamed/deleted)
  • [ ] Library scan: support multiple library paths
  • [ ] Library view: build games list on the frontend
  • [ ] Library view: add pagination
  • [ ] Library view: add list view
  • [ ] Library view: add icon view
  • [ ] Shop generation: encrypted shop toggle
  • [ ] Include js/css in static files
  • [ ] Write Setup page to guide users on how to access the shop on Tinfoil, DBI... (http adress, port, auth...)
  • [ ] Add logging everywhere
  • [ ] Refactor and clean code structure
  • [ ] Use a Bootstrap theme, with dark/light detection like flatly

How to test

To report issues and/or discuss about v2, see the discussion: #52 Use v2 tag, built every commit pushed to the v2 branch:

version: "3"

services:
  ownfoil:
    container_name: ownfoil
    image: a1ex4/ownfoil:v2
    environment:
      # For write permission in config directory
      - PUID=1000
      - PGID=1000
    volumes:
      - /your/game/directory:/games
      - ./config:/app/config
    ports:
      - "8465:8465"

a1ex4 avatar Sep 21 '23 12:09 a1ex4