Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to Kolibri 0.16.1 #99

Merged
merged 70 commits into from
May 24, 2024
Merged

Update to Kolibri 0.16.1 #99

merged 70 commits into from
May 24, 2024

Conversation

dylanmccall
Copy link
Collaborator

@dylanmccall dylanmccall commented Apr 24, 2024

This change comes with a whole bunch of related changes from https://github.com/endlessm/endless-key-flatpak, intended to fix bugs, reduce unnecessary churn with that downstream project, and ease maintenance by adding flatpak-data-checker for Kolibri and other modules.

dylanmccall and others added 22 commits May 3, 2024 17:37
This cache model is intended for applications that display multiple
local files in a browser-like interface.
We can use the Flatpak Github action directly
The list had fallen out of date a bit, meaning the desktop and metainfo
files were not being localised.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Fixes: endlessm/endless-key-flatpak#6
appstream-util comes from libappstream-glib, which is outdated and
unmaintained. appstreamcli is the more modern replacement, and it comes
from libappstream.

It implements more up to date validation rules, in particular it has
raised the maximum length of screenshot captions from 50 characters to a
more manageable 100 characters.

The downside is that it more strictly validates
`<compulsory_for_desktop>`, and rejects ‘endless’ because it’s not
officially registered as a desktop ID. Work around that for now by
temporarily removing that element from the XML during validation. In the
long term, we need to register the ID:
ximion/appstream#522.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Fixes: endlessm/endless-key-flatpak#34
Rather than always against the latest `main`. This ensures that when
running CI on a PR, the code from the PR is what’s being built and
tested.

This uses the flatpak manifest support for pulling git repositories from
a local path, so it will always use the checkout containing the copy of
`org.endlessos.Key.Devel.json` which is being used.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>
Previously the desktop ID defined by Endless OS was `endless`. However,
we are now trying to standardise it, and it would be neater for it to be
`Endless`. Allow both cases of ID in the code, to allow for any
eventuality.

Strictly, this should be a case-sensitive comparison, but it seems
unlikely that someone else is going to claim `endless` in future.

See: https://gitlab.freedesktop.org/xdg/xdg-specs/-/merge_requests/73

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

https://phabricator.endlessm.com/T34910
We’ve recently changed it.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

https://phabricator.endlessm.com/T34910
The string "endless" was changed to "Endless" in a separate commit.
Either one is rejected by appstreamcli.
Previously, these tests were failing in GNOME Builder 44 due to the
tests running from the wrong path.
Wayland is the default windows environment. X11 has been set as the
fallback by "--socket=fallback-x11". So, drop duplicated "--socket=x11"
permission settings.
Cleanup tests and C extensions of unused Python version to reduce
flatpak size.
The main window should be styled to reflect that it is a development
build.

Helps: endlessm/endless-key-flatpak#51
The previous "☢️" suffix was considered to be too alarming.

Closes: endlessm/endless-key-flatpak#51
This was a migration step for an old issue. It is unlikely that it is
still needed.

https://phabricator.endlessm.com/T33314
With this change, kolibri-daemon generates an automatic_provision.json
file before starting Kolibri. Because Kolibri must be initialized early
in the application's lifecycle, it would be a nontrivial effort to make
this happen conditionally. For simplicity, kolibri-daemon will always
generate this file, even when Kolibri is running as a session service.
This is a change from the previous release, where automatic provisioning
only applied for Kolibri as a system service.

It is possible to go back to the old behaviour by running kolibri-daemon
with the environment variable
`KOLIBRI_DAEMON_DISABLE_AUTOMATIC_PROVISION=yes`.

#87
endlessm/endless-key-flatpak#7
This is now completely handled by kolibri-daemon. Together with this
change, the frontend will now always log in automatically. This can be
disabled by running kolibri-gnome with the environment variable
`KOLIBRI_APP_DISABLE_AUTOMATIC_LOGIN=yes`.

#87
endlessm/endless-key-flatpak#7
It is unnecessary to call `registered_plugins.register_plugins` before
enabling new plugins, and in Kolibri 0.16 this causes an error when
Kolibri is initialized.

endlessm/endless-key-flatpak#7
Kolibri quietly ignores language_id when it is set to None, and defaults
to the current system language. Instead, for language_id to actually be
unset, we will set it to an empty string. This causes Kolibri to serve
pages using each client's default language.

Closes: endlessm/endless-key-flatpak#57
@dylanmccall dylanmccall force-pushed the kolibri-0.16.1 branch 2 times, most recently from 681673a to cdfabd6 Compare May 4, 2024 00:43
@dylanmccall dylanmccall marked this pull request as ready for review May 4, 2024 00:51
dbnicholson and others added 26 commits May 23, 2024 15:54
Instead of trying to shove more commands through the entrypoint, run the
whole job from the f-e-d-c container. This allows running the git safe
directory command in a normal way. The only difference is that
`/app/flatpak-external-data-checker` has to be run explicitly instead of
implicitly from the image entrypoint.

Fixes: #45
In addition, label the support link "Documentation" in the About window,
for consistency.

Helps: endlessm/endless-key-flatpak#71
To provide a single source of information about the app, this commit
adds debug info to the About window in the form of a JSON object dump.
It includes the version of the application itself, the versions of
essential Python modules, and runtime information about the Kolibri
daemon service.

Helps: endlessm/endless-key-flatpak#69
Instead of showing the project version, which is always one version
behind, the version in the About dialog will appear as the output of
`git describe --dirty`.

Helps: endlessm/endless-key-flatpak#69
The bump-my-version project is a direct replacement for bump2version,
which is now deprecated.
In development builds of kolibri-gnome, set the About window's release
notes version to a specific string which describes the next release. In
addition, add a mechanism in `.bumpversion.toml` which automatically
updates the release entry for the current development release.
The PRs created by `flatpak-external-data-checker` currently do not
trigger the PR checks to run. This is because the default `GITHUB_TOKEN`
used to create the PR cannot trigger a recursive GitHub Actions
workflow. That's a safety measure to prevent infinitely recursing
workflows.

Instead, use a personal access token (PAT) from the eos-shell-build user
to create the PR. This token was created specifically for use in GitHub
Actions with `repo` scope. The token has been recorded in the
`WORKFLOW_TOKEN` secret.
Node.js 16 actions are deprecated. Update the actions to use Node.js 20.
Instead of authenticating through kolibri-desktop-auth-plugin's custom
login API, we use Kolibri's initialize API with an authentication token.
The API returns a set of cookies, which are copied to WebKit's cookie
manager.

With this change, it is possible to sign in to Kolibri using the core
OSUser authentication flow.
With this change, we can remove kolibri-desktop-auth-plugin.
With the change to use Kolibri's get_os_user hook, we would like for the
user to be able to log in automatically at any time while using Kolibri.
At the moment it is impossible for kolibri-gnome to predict when a token
will be requested and generate a new one, but it is reasonably safe to
reuse an existing token for the duration of a user's session.
In eos-kolibri, the KOLIBRI_APP_AUTOMATIC_PROVISION environment variable
is set for desktop users, but not for the kolibri-daemon system service.
As a result, the daemon application never knows to do automatic
provisioning. To work around this, if kolibri-daemon is running as a
system service we will force automatic provisioning to happen.
@dylanmccall
Copy link
Collaborator Author

I fixed a couple issues in Endless OS related to running kolibri-daemon as a system service. At this point I think this is ready to go!

@dylanmccall dylanmccall merged commit c7824bf into master May 24, 2024
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants