Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- run: sudo apt-get update && sudo apt-get install -y appstream desktop-file-utils
- run: appstreamcli validate --no-net data/io.gknowledge.Gknowledge.metainfo.xml
- run: desktop-file-validate data/io.gknowledge.Gknowledge.desktop
- run: appstreamcli validate --no-net data/io.github.openapi.Gknowledge.metainfo.xml
- run: desktop-file-validate data/io.github.openapi.Gknowledge.desktop
deb:
runs-on: ubuntu-latest
steps:
Expand All @@ -29,11 +29,19 @@ jobs:
python3 -c "import gknowledge" 2>/dev/null || PYTHONPATH=/usr/share/gknowledge python3 -c "import gknowledge; print(gknowledge.__version__)"
flatpak:
runs-on: ubuntu-latest
continue-on-error: true # promote to required once the build is proven green
steps:
- uses: actions/checkout@v4
- run: |
sudo apt-get update && sudo apt-get install -y flatpak flatpak-builder
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y flathub org.gnome.Platform//51 org.gnome.Sdk//51
- run: flatpak-builder --user --force-clean --repo=repo build-dir build-aux/flatpak/io.gknowledge.Gknowledge.yaml
- run: |
flatpak-builder --user --force-clean --repo=repo build-dir build-aux/flatpak/io.github.openapi.Gknowledge.yaml
flatpak build-bundle --runtime-repo=https://dl.flathub.org/repo/flathub.flatpakrepo \
repo gknowledge-dev.flatpak io.github.openapi.Gknowledge
# Installable build of every PR: flatpak install --user gknowledge-dev.flatpak
- uses: actions/upload-artifact@v4
with:
name: gknowledge-flatpak
path: gknowledge-dev.flatpak
retention-days: 14
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@ jobs:
flatpak-bundle:
needs: deb # avoid two jobs racing to create the same release
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
- run: |
sudo apt-get update && sudo apt-get install -y flatpak flatpak-builder
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user -y flathub org.gnome.Platform//51 org.gnome.Sdk//51
- run: |
flatpak-builder --user --force-clean --repo=repo build-dir build-aux/flatpak/io.gknowledge.Gknowledge.yaml
flatpak build-bundle repo gknowledge-${GITHUB_REF_NAME}.flatpak io.gknowledge.Gknowledge
flatpak-builder --user --force-clean --repo=repo build-dir build-aux/flatpak/io.github.openapi.Gknowledge.yaml
flatpak build-bundle --runtime-repo=https://dl.flathub.org/repo/flathub.flatpakrepo \
repo gknowledge-${GITHUB_REF_NAME}.flatpak io.github.openapi.Gknowledge
- uses: softprops/action-gh-release@v2
with:
files: gknowledge-*.flatpak
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,26 @@

All notable changes to gknowledge. Dates are release dates.

## 0.3.0 — 2026-10-19

**Wiki**
- gknowledge notices when a source's original file changed after it was ingested. The source is marked "changed since ingest", and **Update** takes the new version and extracts it again, so pages stop describing an old version of the document.
- Re-ingest and remove a source; pages backed only by that source are removed, shared pages keep their other sources (thanks @Aaqibhafeezkhan, #30).
- MCP: new `stale_sources` tool, so agents can check the wiki for drift.

**App**
- Clicking a document in the sidebar opens it, in every section (it only highlighted the row before).
- Preferences: wider dialog; provider and model names are no longer cut off.

**Packaging**
- New app ID `io.github.openapi.Gknowledge` (was `io.gknowledge.Gknowledge`, a domain we do not own). Flatpak installs from the Pages remote move to the new ID on `flatpak update`, settings included.
- Flatpak: install from the signed remote with `flatpak install --user https://openapi.github.io/gknowledge/io.github.openapi.Gknowledge.flatpakref`; GNOME 51 runtime, no home-folder access (files are opened through portals).
- Flatpak: creating or opening a project in a folder picked with the file chooser failed with "disk I/O error": SQLite's WAL mode cannot run on the document portal. Projects now use a classic journal, and older projects are converted when opened.
- Flatpak: PDF import works (pypdf is now bundled).
- Signed APT repository on GitHub Pages, and a Debian source package.
- `gknowledge-mcp` on PyPI (`uvx gknowledge-mcp`) and in the official MCP registry.
- `make start-flatpak` runs the development loop inside the GNOME runtime.

## 0.2.2 — 2026-10-13

**Packaging**
Expand Down
2 changes: 1 addition & 1 deletion DISTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ L'accettazione su Flathub è basata su regole ed è veloce: le cinque app compar
|---|---|---|
| Runtime "the latest version at that time of submission"; runtime EOL rifiutati | `org.gnome.Platform` **46** | Passare al runtime corrente (Alpaca e Newelle sono su GNOME 50; il Circle ha chiesto ai membri di abbandonare il 49 entro il 10 ottobre 2026) ([requirements](https://docs.flathub.org/docs/for-app-authors/requirements); [Circle #280](https://gitlab.gnome.org/Teams/Circle/-/issues/280)) |
| Sorgenti con URL pubblici; "built entirely from source code"; nessun binario nel PR | `sources: type: dir, path: ../..` | Usare `type: git` con tag o `type: archive` con sha256 su una release GitHub; vendorizzare `pypdf` come wheel offline (pattern `flatpak-pip-generator`, come Alpaca) ([manifest Alpaca](https://github.com/flathub/com.jeffser.Alpaca/blob/master/com.jeffser.Alpaca.yml)) |
| ID app: dominio controllato dall'autore con `.well-known/org.flathub.VerifiedApps.txt`, oppure `io.github.<owner>.<App>` | `io.gknowledge.Gknowledge` | Verificare se il dominio `gknowledge.io` è controllato (serve HTTPS e il token); altrimenti rinominare in `io.github.<owner>.Gknowledge` prima della sottomissione, perché Flathub rifiuta rinomine subito dopo l'accettazione ([requirements](https://docs.flathub.org/docs/for-app-authors/requirements); [verification](https://docs.flathub.org/docs/for-app-authors/verification)) |
| ID app: dominio controllato dall'autore con `.well-known/org.flathub.VerifiedApps.txt`, oppure `io.github.<owner>.<App>` | `io.gknowledge.Gknowledge` → **`io.github.openapi.Gknowledge` dalla 0.3.0** (19 ott 2026: gknowledge.io non registrato, openapi.io in vendita; il remote su Pages fa end-of-life-rebase dal vecchio ID) | ~~Verificare se il dominio `gknowledge.io` è controllato (serve HTTPS e il token); altrimenti rinominare in `io.github.<owner>.Gknowledge` prima della sottomissione~~ fatto; Flathub rifiuta rinomine subito dopo l'accettazione ([requirements](https://docs.flathub.org/docs/for-app-authors/requirements); [verification](https://docs.flathub.org/docs/for-app-authors/verification)) |
| MetaInfo valida: screenshot, developer name, licenza, release con data, content rating; "warnings fatal", nessuna eccezione per `appstream-missing-screenshots` e `appstream-missing-developer-name` | metainfo con `summary`, `description`, `project_license` MIT, `content_rating`, una release 0.1.0; **mancano screenshot, `developer`, `url` (homepage, bugtracker), `branding`** | Completare il MetaInfo e validarlo con `flatpak-builder-lint` ([linter](https://docs.flathub.org/docs/for-app-authors/linter)) |
| "Static permissions must be kept to an absolute minimum"; portali obbligatori dove esistono | `--filesystem=home` | Vedi 5.4 |
| "Applications that have only existed for a very short period of time will generally not be accepted"; solo software stabile | release 0.1.0 datata 2026-07-07 | Sottomettere con una 0.2/0.3 testata, non con l'MVP |
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# pip's externally-managed environment. Use PREFIX=/usr with sudo for a
# system-wide install.

APP_ID := io.gknowledge.Gknowledge
APP_ID := io.github.openapi.Gknowledge
PYTHON ?= python3
PREFIX ?= $(HOME)/.local
DESTDIR ?=
Expand Down
4 changes: 2 additions & 2 deletions README.es.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img src="data/icons/hicolor/scalable/apps/io.gknowledge.Gknowledge.svg" alt="" width="96">
<img src="data/icons/hicolor/scalable/apps/io.github.openapi.Gknowledge.svg" alt="" width="96">
</p>

<h1 align="center">gknowledge</h1>
Expand Down Expand Up @@ -42,7 +42,7 @@ sudo apt update && sudo apt install gknowledge
En cualquier distribución, con Flatpak (el runtime de GNOME viene de Flathub):

```bash
flatpak install --user https://openapi.github.io/gknowledge/io.gknowledge.Gknowledge.flatpakref
flatpak install --user https://openapi.github.io/gknowledge/io.github.openapi.Gknowledge.flatpakref
```

## Pensada para funcionar sin internet
Expand Down
4 changes: 2 additions & 2 deletions README.fr.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img src="data/icons/hicolor/scalable/apps/io.gknowledge.Gknowledge.svg" alt="" width="96">
<img src="data/icons/hicolor/scalable/apps/io.github.openapi.Gknowledge.svg" alt="" width="96">
</p>

<h1 align="center">gknowledge</h1>
Expand Down Expand Up @@ -42,7 +42,7 @@ sudo apt update && sudo apt install gknowledge
Sur n'importe quelle distribution, avec Flatpak (le runtime GNOME vient de Flathub) :

```bash
flatpak install --user https://openapi.github.io/gknowledge/io.gknowledge.Gknowledge.flatpakref
flatpak install --user https://openapi.github.io/gknowledge/io.github.openapi.Gknowledge.flatpakref
```

## Pensé pour fonctionner sans connexion
Expand Down
4 changes: 2 additions & 2 deletions README.it.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img src="data/icons/hicolor/scalable/apps/io.gknowledge.Gknowledge.svg" alt="" width="96">
<img src="data/icons/hicolor/scalable/apps/io.github.openapi.Gknowledge.svg" alt="" width="96">
</p>

<h1 align="center">gknowledge</h1>
Expand Down Expand Up @@ -42,7 +42,7 @@ sudo apt update && sudo apt install gknowledge
Su qualsiasi distribuzione, con Flatpak (il runtime GNOME arriva da Flathub):

```bash
flatpak install --user https://openapi.github.io/gknowledge/io.gknowledge.Gknowledge.flatpakref
flatpak install --user https://openapi.github.io/gknowledge/io.github.openapi.Gknowledge.flatpakref
```

## Perché gknowledge
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img src="data/icons/hicolor/scalable/apps/io.gknowledge.Gknowledge.svg" alt="" width="96">
<img src="data/icons/hicolor/scalable/apps/io.github.openapi.Gknowledge.svg" alt="" width="96">
</p>

<h1 align="center">gknowledge</h1>
Expand Down Expand Up @@ -65,12 +65,12 @@ sudo apt update && sudo apt install gknowledge
**On any distribution, with Flatpak** (the GNOME runtime comes from Flathub):

```bash
flatpak install --user https://openapi.github.io/gknowledge/io.gknowledge.Gknowledge.flatpakref
flatpak install --user https://openapi.github.io/gknowledge/io.github.openapi.Gknowledge.flatpakref
```

Both repositories are described at [openapi.github.io/gknowledge](https://openapi.github.io/gknowledge).

Then open **gknowledge** from the app grid. To remove it: `sudo apt remove gknowledge` (or `flatpak uninstall io.gknowledge.Gknowledge`).
Then open **gknowledge** from the app grid. To remove it: `sudo apt remove gknowledge` (or `flatpak uninstall io.github.openapi.Gknowledge`).

<details>
<summary>Other distributions, from source, and release builds</summary>
Expand Down
4 changes: 2 additions & 2 deletions README.pt-BR.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img src="data/icons/hicolor/scalable/apps/io.gknowledge.Gknowledge.svg" alt="" width="96">
<img src="data/icons/hicolor/scalable/apps/io.github.openapi.Gknowledge.svg" alt="" width="96">
</p>

<h1 align="center">gknowledge</h1>
Expand Down Expand Up @@ -42,7 +42,7 @@ sudo apt update && sudo apt install gknowledge
Em qualquer distribuição, com Flatpak (o runtime do GNOME vem do Flathub):

```bash
flatpak install --user https://openapi.github.io/gknowledge/io.gknowledge.Gknowledge.flatpakref
flatpak install --user https://openapi.github.io/gknowledge/io.github.openapi.Gknowledge.flatpakref
```

## Feito para funcionar sem internet
Expand Down
4 changes: 2 additions & 2 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img src="data/icons/hicolor/scalable/apps/io.gknowledge.Gknowledge.svg" alt="" width="96">
<img src="data/icons/hicolor/scalable/apps/io.github.openapi.Gknowledge.svg" alt="" width="96">
</p>

<h1 align="center">gknowledge</h1>
Expand Down Expand Up @@ -42,7 +42,7 @@ sudo apt update && sudo apt install gknowledge
任意发行版,使用 Flatpak(GNOME 运行时自动从 Flathub 安装):

```bash
flatpak install --user https://openapi.github.io/gknowledge/io.gknowledge.Gknowledge.flatpakref
flatpak install --user https://openapi.github.io/gknowledge/io.github.openapi.Gknowledge.flatpakref
```

## 为什么选择 gknowledge
Expand Down
11 changes: 6 additions & 5 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ Source: [comment by Justin (@fromthearchitect)](https://dev.to/fromthearchitect/
Flatpak (the `.deb` and `install.sh` do nothing for Fedora, Arch or openSUSE users)
- [x] Flatpak build is green in CI (`appstreamcli compose` succeeds since the GNOME 51 bump); every release attaches a bundle and `repos.yml` publishes the remote at `openapi.github.io/gknowledge` (closes #24).
- [x] `flatpak install --user https://openapi.github.io/gknowledge/io.gknowledge.Gknowledge.flatpakref` works on Ubuntu (2026-10-19): pulls GNOME 51 from Flathub, installs 0.2.2, the app launches.
- [ ] Inside the Flatpak: create a project, import through the portal, ingest, reopen after a restart.
- [x] Inside the Flatpak, New Project failed with "disk I/O error" (SQLite WAL needs shared memory the document portal does not provide); the store no longer uses WAL and converts old databases. Project creation, PDF/Markdown import, ingest, query and drift check verified on a portal path (2026-10-19).
- [ ] Inside the Flatpak, by hand: create a project, import through the file chooser, ingest, reopen after a restart.
- [ ] Verify on a non-Ubuntu distro (Fedora VM or toolbox) before replying to Justin.
- [x] README: badge and comparison table no longer say "Flatpak planned" (install section left as is).
- [x] Vendor `pypdf` 6.19.0 in the manifest (the 0.2.2 bundle has `No module named 'pypdf'`, so PDF import fails). Builds green on PR #42.
- [ ] Push a release so the published bundle includes the stale-source check, then tag the remote as tested.
- [ ] Make the CI and release Flatpak jobs blocking (drop `continue-on-error`) now that they pass.
- [ ] Release 0.3.0 (prepared 2026-10-19: version, CHANGELOG, MetaInfo, release notes with the Flatpak line): test the CI bundle end to end, merge, tag `v0.3.0`, then reinstall from the Pages remote and check `flatpak update`.
- [x] CI and release Flatpak jobs are blocking (no `continue-on-error`); CI uploads an installable `gknowledge-dev.flatpak` artifact for every PR.
- [ ] Flathub itself stays paused (AI-assisted code policy, see P0 below); say so plainly if asked, and point to the Pages remote.

Develop against the runtime users get
Expand Down Expand Up @@ -86,7 +87,7 @@ Speed and feedback
- [ ] Publish a statement on AI-assisted code (Flathub and GNOME Circle have an AI-code policy since May 2026; this repo is developed with AI assistance and must say so plainly).

### Flatpak and Flathub (paused: kept warm, do not submit until policy allows AI-assisted code)
- [ ] Decide the app ID (`io.github.<owner>.Gknowledge` or a verified domain). `io.gknowledge.*` needs a domain we control.
- [x] App ID is `io.github.openapi.Gknowledge` since 0.3.0 (`io.gknowledge.*` used gknowledge.io, which nobody owns). The Pages remote rebases the old ID with end-of-life-rebase; `.desktop` has `X-Flatpak-RenamedFrom`, MetaInfo has `<replaces>`.
- [x] Bump the runtime to GNOME 51 (current stable on Flathub). Not yet built in CI.
- [x] Replace `--filesystem=home` with FileChooser / Documents portals; keep only `--share=network`. Done in the manifest, untested in a real Flatpak build.
- [ ] Build from `git`/`archive` sources instead of `type: dir` (`pypdf` vendored).
Expand All @@ -100,7 +101,7 @@ Speed and feedback
- [x] Keyboard accelerators for new/open/preferences/quit.
- [x] Desktop entry advertises Markdown, text, PDF and HTML; files passed by the file manager are imported into the current project.
- [x] About dialog points to the real repository and issue tracker.
- [ ] GSettings schema (`io.gknowledge.Gknowledge`): window size, maximized, last project, provider; install and compile it in `make install` and the Flatpak.
- [ ] GSettings schema (`io.github.openapi.Gknowledge`): window size, maximized, last project, provider; install and compile it in `make install` and the Flatpak.
- [ ] Register projects with `Gtk.RecentManager`.
- [ ] `Gio.Notification` when ingestion finishes or fails.
- [ ] Drag and drop of files and folders onto the Sources pane.
Expand Down
4 changes: 2 additions & 2 deletions build-aux/debian/changelog
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
gknowledge (0.2.2-1) unstable; urgency=medium
gknowledge (0.3.0-1) unstable; urgency=medium

* Initial release. (Closes: #XXXXXX)

-- Francesco Bianco <info.francescobianco@gmail.com> Tue, 13 Oct 2026 14:00:00 +0000
-- Francesco Bianco <info.francescobianco@gmail.com> Mon, 19 Oct 2026 12:00:00 +0000
2 changes: 1 addition & 1 deletion build-aux/debian/copyright
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Files: *
Copyright: 2026 Openapi®
License: Expat

Files: data/io.gknowledge.Gknowledge.metainfo.xml
Files: data/io.github.openapi.Gknowledge.metainfo.xml
Copyright: 2026 Openapi®
License: CC0-1.0

Expand Down
2 changes: 1 addition & 1 deletion build-aux/debian/gknowledge-mcp.1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.TH GKNOWLEDGE-MCP 1 "October 2026" "gknowledge 0.2.2" "User Commands"
.TH GKNOWLEDGE-MCP 1 "October 2026" "gknowledge 0.3.0" "User Commands"
.SH NAME
gknowledge-mcp \- Model Context Protocol server for a gknowledge wiki
.SH SYNOPSIS
Expand Down
2 changes: 1 addition & 1 deletion build-aux/debian/gknowledge.1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.TH GKNOWLEDGE 1 "October 2026" "gknowledge 0.2.2" "User Commands"
.TH GKNOWLEDGE 1 "October 2026" "gknowledge 0.3.0" "User Commands"
.SH NAME
gknowledge \- native GNOME app that turns documents into a cited wiki
.SH SYNOPSIS
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
app-id: io.gknowledge.Gknowledge
app-id: io.github.openapi.Gknowledge
runtime: org.gnome.Platform
runtime-version: '51'
sdk: org.gnome.Sdk
Expand Down
6 changes: 6 additions & 0 deletions build-aux/release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ curl -fsSL https://github.com/openapi/gknowledge/releases/latest/download/instal

Or download `gknowledge_all.deb` below and run `sudo apt install ./gknowledge_all.deb` (Ubuntu 24.04+ / Debian 13+).

On any distribution with Flatpak (Fedora, Arch, openSUSE, …):

```bash
flatpak install --user https://openapi.github.io/gknowledge/io.github.openapi.Gknowledge.flatpakref
```

## What's new

See [CHANGELOG.md](https://github.com/openapi/gknowledge/blob/main/CHANGELOG.md).
Expand Down
12 changes: 11 additions & 1 deletion build-aux/repos/build-site.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ DEB_DIR=$1
BUNDLE=$2
OUT=$3
BASE_URL=${4%/}
APP_ID=io.gknowledge.Gknowledge
APP_ID=io.github.openapi.Gknowledge
# Until 0.3.0 the app was io.gknowledge.Gknowledge (a domain nobody owns).
OLD_ID=io.gknowledge.Gknowledge
: "${GPG_KEY_ID:?set GPG_KEY_ID to the signing key}"
ROOT=$(cd "$(dirname "$0")/../.." && pwd)

Expand Down Expand Up @@ -68,6 +70,12 @@ ostree init --mode=archive-z2 --repo="$FP"
# Only affects building; a nearly full build disk should not abort the import.
ostree config --repo="$FP" set core.min-free-space-percent 0
flatpak build-import-bundle --gpg-sign="$GPG_KEY_ID" "$FP" "$BUNDLE"
# Installs of the old ID move to the new one on the next `flatpak update`,
# and Flatpak carries ~/.var/app/$OLD_ID over with them.
for ref in $(ostree refs --repo="$FP" | grep "^app/$APP_ID/"); do
flatpak build-commit-from --gpg-sign="$GPG_KEY_ID" --src-ref="$ref" \
--end-of-life-rebase="$OLD_ID=$APP_ID" "$FP" "app/$OLD_ID/${ref#app/$APP_ID/}"
done
flatpak build-update-repo --gpg-sign="$GPG_KEY_ID" --generate-static-deltas \
--title=gknowledge --default-branch=master "$FP"

Expand All @@ -94,6 +102,8 @@ RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
IsRuntime=false
GPGKey=$KEY_B64
EOF
# Links to the old .flatpakref keep working and install the new ID.
cp "$OUT/$APP_ID.flatpakref" "$OUT/$OLD_ID.flatpakref"
cp "$ROOT/data/icons/hicolor/scalable/apps/$APP_ID.svg" "$OUT/"

# --- Landing page -----------------------------------------------------------
Expand Down
Loading
Loading