You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,8 +21,8 @@ A command line interface for reaching the National Bureau of Economic Research (
21
21
- Cache paper metadata locally (`nber-cli info` writes to `info_cache`) with a sliding TTL, plus a behavior log for `search`, `download`, and `info` lookups.
22
22
- Store the cache, RSS items, and behavior logs in a local SQLite database at `~/.nber-cli/nber.db`, managed through SQLModel/SQLAlchemy and configurable with a filesystem path or `sqlite:///...` URL.
23
23
- Expose the same core workflows as MCP tools for AI agents.
24
-
- Provide an optional loopback-only HTTP server for the Desktop app and local integrations.
25
-
- Provide a macOS and Windows Desktop research workspace with feed sync, unread tracking, paper details, and citation copying.
24
+
- Provide an optional loopback-only HTTP server for local integrations.
25
+
- Provide a native Rust/SQLite Desktop workspace for macOS, Windows, and Linux without a Python sidecar.
26
26
- Return human-readable output by default, with JSON output for automation.
27
27
- Provide `--verbose` debug logging and a rotating log file for troubleshooting.
28
28
- Use `-c/--config <path>` to temporarily override the config file for a single run.
@@ -112,7 +112,7 @@ The server upgrades the local SQLite database to schema v3 on startup and expose
112
112
113
113
### Desktop App
114
114
115
-
Download the macOSor Windows installer from [GitHub Releases](https://github.com/sepinetam/nber-cli/releases). Current installers are unsigned, so read the [Desktop guide](docs/en/desktop.md) before overriding any macOS Gatekeeper or Windows SmartScreen warning. The guide also documents supported platforms, local files, settings, backup, and the current custom-database limitation.
115
+
Download the macOS, Windows, or Linux installer from [GitHub Releases](https://github.com/sepinetam/nber-cli/releases). Current installers are unsigned. Desktop 0.9.0 talks directly to the shared SQLite database from Rust and does not require Python; see the [Desktop guide](docs/en/desktop.md).
116
116
117
117
If macOS reports that "NBER-CLI Desktop.app" is damaged and cannot be opened, run `xattr -cr /Applications/NBER-CLI\ Desktop.app` in Terminal, then reopen the app.
NBER-CLI Desktop is the desktop shell for NBER-CLI V1. It uses Tauri v2, React, TypeScript, a local FastAPI sidecar, and the default SQLite database at `~/.nber-cli/nber.db`. Desktop 0.8.1 does not yet honor the CLI's custom `feed.db-path`; see the [Desktop user guide](../docs/en/desktop.md).
3
+
NBER-CLI Desktop is a Tauri v2 and React research workspace. Since Desktop 0.9.0, its Rust core talks directly to the shared SQLite database and NBER endpoints. The application does not start, bundle, or require a Python sidecar.
4
+
5
+
Desktop and the Python CLI share the configured database, including `feed_items`, `info_cache`, and `read_status`. A custom `feed.db-path` created by `nber-cli db migrate` is honored when it points inside the user's home directory.
4
6
5
7
## Development
6
8
7
9
From the repository root:
8
10
9
11
```bash
10
-
uv sync --dev --extra server
11
12
cd desktop
12
13
npm install
13
14
npm run tauri dev
14
15
```
15
16
16
-
In development, the Tauri shell starts the Python sidecar through:
17
-
18
-
```bash
19
-
uv run nber-sidecar --port 31527
20
-
```
21
-
22
-
## Python API
23
-
24
-
```bash
25
-
uv run nber-sidecar --host 127.0.0.1 --port 31527
26
-
```
27
-
28
-
Useful endpoints:
17
+
The React frontend calls these native Tauri commands:
29
18
30
-
-`GET /api/v1/health`
31
-
-`GET /api/v1/feed`
32
-
-`POST /api/v1/feed/refresh`
33
-
-`GET /api/v1/papers/{paper_id}`
34
-
-`POST /api/v1/papers/{paper_id}/mark-read`
35
-
-`GET /api/v1/settings`
36
-
-`PATCH /api/v1/settings`
19
+
-`get_config`
20
+
-`get_feed`
21
+
-`refresh_feed`
22
+
-`get_paper`
23
+
-`set_paper_read_status`
24
+
-`get_settings`
25
+
-`save_settings`
37
26
38
-
See the [Local HTTP API reference](../docs/en/http-api.md) for query parameters, request bodies, response envelopes, error codes, and endpoint side effects.
39
-
40
-
## Build Sidecar
41
-
42
-
```bash
43
-
uv sync --extra server --group desktop-build
44
-
uv run python scripts/build-sidecar.py --clean
45
-
```
46
-
47
-
The script writes the platform-specific sidecar to `desktop/src-tauri/binaries/` using Tauri's expected target triple naming.
27
+
The optional Python HTTP API remains available for other local integrations, but Desktop does not use it.
48
28
49
29
## Build App
50
30
@@ -54,37 +34,35 @@ npm run build
54
34
npm run tauri build
55
35
```
56
36
57
-
Code signing requires the Apple Developer ID and Windows code signing secrets listed in the Release section below.
37
+
No Python runtime or sidecar build step is required. Code signing remains optional because the project currently ships unsigned packages.
58
38
59
39
## Verification
60
40
61
-
Run the repository gates before preparing a desktop build:
41
+
Run the repository gates before preparing a Desktop build:
62
42
63
43
```bash
64
44
uv run ruff check .
65
-
uv run pytest tests
45
+
uv run pytest
66
46
cd desktop
67
47
npm run lint
68
48
npm run test
69
49
npm run build
70
50
cd src-tauri
71
-
cargo check
51
+
cargo test --locked
72
52
```
73
53
74
-
After building a macOS package, verify size and install/start behavior from the DMG:
54
+
After building a package, verify its contents and native startup flow:
75
55
76
56
```bash
77
57
uv run python scripts/check-desktop-release.py --platform macos --max-mb 80
78
-
uv run python scripts/smoke-desktop-app.py --install-from-package --exercise-live-refresh
58
+
uv run python scripts/smoke-desktop-app.py --install-from-package
79
59
```
80
60
81
-
On Windows CI or a Windows machine, use the same release checker and smoke script with `--platform windows`.
61
+
Use the corresponding `windows`or `linux` platform argument on those systems. The package check fails if a Python sidecar is present.
82
62
83
63
## Release
84
64
85
-
GitHub Actions builds Desktop artifacts from the same `v*` tag used by the Python package release, or when the Desktop workflow is manually dispatched. Pushing a tag such as `v0.8.1` runs the full checks and creates one draft GitHub Release containing the macOS and Windows installers. Publishing that same Release triggers the PyPI workflow, so the CLI and Desktop ship under one version and one Release.
86
-
87
-
Desktop releases are unsigned by default. To require signed Windows artifacts plus signed and notarized macOS artifacts in the future, set the repository variable `DESKTOP_REQUIRE_SIGNING` to `true` and configure the signing secrets below.
65
+
GitHub Actions builds macOS arm64/x64, Windows x64, and Linux x64 artifacts from a `v*` tag. The same tag is used for the Python package and Desktop app. Pushing `v0.9.0` creates or updates a draft GitHub Release; publish it after all platform artifacts have uploaded successfully.
88
66
89
67
Before tagging, keep these versions aligned:
90
68
@@ -93,12 +71,4 @@ Before tagging, keep these versions aligned:
93
71
-`desktop/src-tauri/tauri.conf.json`, `Cargo.toml`, and `Cargo.lock`
Signing is not required. If paid certificates are added later, set `DESKTOP_REQUIRE_SIGNING=true` and configure the signing secrets documented in the release workflow.
0 commit comments