Skip to content

Releases: mherrmann/fbs

Expose build settings to fbs_runtime

21 Dec 09:32
Compare
Choose a tag to compare

A common thing to do is to display the version of your app in the GUI. In previous versions of fbs, this was difficult. The reason for this is that the version was stored in (usually) the base.json settings file, which is theoretically available when you run from source, but not when running the frozen form of your app.

This release of fbs adds a property called public_settings to ApplicationContext. It lets you easily access certain settings (such as version) from your application. For an example, please see the associated documentation.

Add a custom Excepthook for easier debugging

20 Dec 07:05
Compare
Choose a tag to compare

Let f and h be Python functions and g be a function of Qt. If

f() -> g() -> h()

(where "->" means "calls"), and an exception occurs in h(), then the
traceback does not contain f. This can make debugging very difficult.

This version of fbs adds a custom excepthook that adds the missing
traceback entries. You can change it by overwriting the
@cached_property ApplicationContext.excepthook.

The code below can be used to reproduce the f() -> g() -> h()
problem. It opens a window with a button. When you click it, an error
occurs whose traceback does not include f().

The problem described here is not specific to PyQt5 - It occurs for
PySide2 as well. To see this, replace PyQt5 by PySide2 below.

from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

class Window(QWidget):
    def __init__(self):
        super().__init__()
        btn = QPushButton('Click me', self)
        btn.clicked.connect(self.f)
    def f(self, _):
        self.inputMethodQuery(Qt.ImAnchorPosition)
    def inputMethodQuery(self, query):
        if query == Qt.ImAnchorPosition:
            # Make Qt call inputMethodQuery(ImCursorPosition).
            # This is our "g()":
            return super().inputMethodQuery(query) # "g()"
        self.h()
    def h(self):
        raise Exception()

app = QApplication([])
window = Window()
window.show()
app.exec_()

Add support for building on Linux Mint

18 Dec 06:12
Compare
Choose a tag to compare

startproject command: don't allow spaces in app name

13 Dec 17:25
Compare
Choose a tag to compare
v0.5.5

Set version number for release 0.5.5

Small improvements

13 Dec 15:02
Compare
Choose a tag to compare
  • Slightly improved the output you see from several fbs commands.
  • fbs freeze now gives a more helpful hint when msvcr110.dll can't be found on Windows. See #63.

Add a `release` command

11 Dec 18:11
Compare
Choose a tag to compare

It bumps the version and runs clean, freeze, ..., upload.

Add `upload` command

10 Dec 19:14
Compare
Choose a tag to compare

The new command uploads your binaries to https://fbs.sh, so your users can download and install very easily. This is especially powerful on Linux, where automatic updates and code signing are already implemented. Say you are on Linux. Then the following sequence of commands creates, compiles and uploads an app:

fbs startproject
fbs gengpgkey
fbs register
fbs buildvm ubuntu
fbs runvm ubuntu
# (In the Ubuntu virtual machine):
fbs clean
fbs freeze
fbs installer
fbs repo
fbs upload

The output of the upload command gives you download instructions that you can give to your users. What's more, when they install your app using the instructions and you release a new version via the above commands, then they automatically receive your changes 💪

This release also improves the usability of a few other commands.

Large and small improvements

07 Dec 12:12
Compare
Choose a tag to compare
  • There are now register and login commands. This is in preparation of an upload command which will let you upload your installer to the domain https://fbs.sh.
  • Sensitive settings are now stored in src/build/settings/secret.json. This lets you exclude this file from VCS, and thus eg. prevent it from being uploaded to GitHub.
  • Many commands now give more helpful hints when you use them incorrectly.

Fix broken `buildvm` command

30 Nov 18:02
Compare
Choose a tag to compare
v0.5.0

Set version number for release 0.5.0

A few small bug fixes

30 Nov 15:19
Compare
Choose a tag to compare

Pertaining to the new commands

  • sign_installer
  • repo
  • buildvm