Skip to content

Releases: SepineTam/nber-cli

v0.8.0

Choose a tag to compare

@SepineTam SepineTam released this 13 Jul 12:13

NBER CLI v0.8.0 Release Notes

What's New

Desktop App

  • NBER-CLI Desktop v1 for macOS and Windows. A Tauri 2 desktop app built with React provides a research workspace for browsing the local feed, filtering unread papers, viewing paper details, adjusting settings, and copying citations in BibTeX, APA, MLA, Harvard, Chicago, and GB/T formats.
  • Local feed sync in the desktop app. The desktop workspace syncs against the same SQLite database as the CLI and reflects read/unread status.
  • NBER branding. The desktop app uses NBER-CLI icons and assets instead of the default Tauri branding.
  • Cross-platform build pipeline. Added GitHub Actions workflows to build, normalize artifacts, run smoke tests, validate packages, check signatures, and handle macOS notarization.

Local HTTP Server

  • Optional server extra. Install the local HTTP service with nber-cli[server]. FastAPI, Uvicorn, and Alembic are no longer part of the default CLI installation.
  • Independent nber_server package. The HTTP service is now split into its own package while continuing to reuse the existing nber_cli core and SQLite database.
  • New entry points. The server extra adds nber-server and nber-sidecar commands for running the loopback FastAPI service.
  • Alembic-managed migrations. Database schema changes are now managed by Alembic. Schema v3 adds the read_status table, and existing v1 and v2 databases upgrade automatically without losing records.

Diagnostics

  • New nber-cli doctor command. Shows the installed and PyPI versions, executable and package locations, config contents, database path, schema version, size, and last recorded activity.
  • nber-cli doctor --fix-version. Refreshes uvx caches or upgrades installations detected as uv tool, pipx, or pip.

Documentation

  • Expanded English and Chinese docs. Added architecture, persistence, configuration, getting-started, testing, and Desktop guides.
  • Documented the local HTTP API contract and current implementation limits.
  • Corrected CLI and MCP runtime contracts and Codex integration setup instructions.

Fixed

  • Stabilized Desktop smoke tests on alternate local ports.
  • Added checks for bundled sidecars, installer signatures, and macOS notarization.
  • Pinned CI dependencies for reliable Linux installs and consistent CLI and desktop release tags.

Installation

uv tool install nber-cli==0.8.0
# or
pip install nber-cli==0.8.0
# or
uvx nber-cli==0.8.0

To install with the optional local HTTP server:

uv tool install "nber-cli[server]==0.8.0"

Full Changelog: v0.7.0...v0.8.0
Download: v0.8.0 Release

v0.7.0

Choose a tag to compare

@SepineTam SepineTam released this 08 Jul 10:25

NBER CLI v0.7.0 Release Notes

What's New

Logging and Debugging

  • Global --verbose flag. Running nber-cli --verbose <command> emits debug-level logs to stderr and to the rotating log file.
  • NBER_CLI_DEBUG=1 environment variable. An alternative way to enable debug output without typing --verbose every time.
  • Rotating log file at ~/.nber-cli/debug.log. By default only warnings and errors are written; debug output is added when verbose mode is enabled. The file rotates at 1 MB and keeps three backups.
  • Key operations are now logged: network request URLs and response statuses, feed fetch lifecycle, database paths, search queries, and errors with retry attempts.

Config File Override

  • -c/--config <path> global flag. Specify a custom config file for a single invocation without changing the default ~/.nber-cli/config.json. Useful for debugging or switching environments temporarily.

Fixed

  • Restored NBER feed access. NBER's CDN began rejecting requests that only carried a minimal User-Agent. All NBER requests now send a full set of browser-like headers (Accept, Accept-Language, Sec-Fetch-*, Upgrade-Insecure-Requests, etc.), restoring access to the RSS feed and other endpoints.

Installation

uv tool install nber-cli==0.7.0
# or
pip install nber-cli==0.7.0
# or
uvx nber-cli==0.7.0

Full Changelog: v0.6.0...v0.7.0
Download: v0.7.0 Release

v0.6.0

Choose a tag to compare

@SepineTam SepineTam released this 05 Jul 08:09

NBER CLI v0.6.0 Release Notes

What's New

Database Layer Migration

  • The database layer now uses SQLModel and SQLAlchemy. All feed, query, download, info, and info-cache tables are declared as SQLModel models with explicit indexes.
  • SQLite URLs are supported. Database paths can now be specified as sqlite:///path/to/nber.db in CLI arguments and configuration.
  • db init and db migrate accept sqlite:/// URLs. The --db-path argument and new_db_path positional argument now parse URLs and file paths uniformly.
  • Transactions are explicit. Feed fetches, cache cleanups, and logging writes open a SQLAlchemy Session and commit before returning.
  • Schema management is centralized. Table creation and migrations use SQLModel metadata instead of hand-written CREATE TABLE statements.

Configuration

  • config.schema.json now describes the database path as a "Path or sqlite:/// URL."

Dependencies

  • Added sqlmodel>=0.0.24 and its transitive SQLAlchemy dependencies to the package requirements.

Tests

  • Added CLI tests for sqlite:/// database path handling.
  • Updated database tests to assert SQLModel-backed schema creation and migration behavior.
  • Updated info-cache tests to match the new database internals.

Agent Plugins

  • Plugin manifests and marketplace metadata are synchronized to version 0.6.0.

Installation

uv tool install nber-cli==0.6.0
# or
pip install nber-cli==0.6.0
# or
uvx nber-cli==0.6.0

Full Changelog: v0.5.0...v0.6.0
Download: v0.6.0 Release

v0.5.0

Choose a tag to compare

@SepineTam SepineTam released this 16 Jun 11:12

NBER CLI v0.5.0 Release Notes

What's New

Security Hardening

  • RSS parsing is now protected against XXE attacks. The feed parser uses defusedxml instead of the standard library XML parser, blocking external entities and entity expansion.
  • Downloads stay inside your working directory by default. Run nber-cli download --restrict false to opt out per invocation. The download.restrict_dir config key is stored and validated, but the current CLI default remains true.
  • Database paths are constrained to your home directory on Unix. db init and db migrate reject paths outside $HOME on macOS and Linux.
  • TLS 1.2 is now the minimum version for synchronous HTTP requests.
  • Selected info/download failure paths expose less raw exception detail. Download log messages and soft database warnings use sanitized summaries or exception class names.

Configuration Management

  • New nber-cli config subcommand: show, get <key>, set <key> <value>, and verify make it easy to inspect and edit ~/.nber-cli/config.json without touching the file directly.
  • JSON Schema validation is shipped in the package as config.schema.json; config verify validates your file against it.
  • Strict raw-config validation reports malformed JSON, invalid section/value types, and values below schema minima without hiding them behind injected defaults.
  • New public Python API exports for config management: read_config, write_config, get_config_value, set_config_value, and validate_config.

Download and Feed Improvements

  • Concurrent downloads are capped. The new download.concurrency setting defaults to 3; use --concurrency / -c to override on the fly.
  • Invalid concurrency values fail safely. Per-call invalid values are rejected, while invalid persisted values fall back to the documented default.
  • Malformed RSS items are skipped instead of aborting the whole feed fetch.
  • Feed persistence is ordered and transactional. The database schema is established before the network request, and feed items plus fetch history are committed together.
  • Cache cleanup is transactional with schema validation. Feed and info cache cleanup pair schema validation/upgrade and deletion in one SQLite transaction.
  • More tolerant RSS parsing handles unescaped < characters in titles and abstracts, plus the author separator used in some NBER feed titles.
  • Better retries use exponential backoff with a 30-second ceiling.

Validation and Database Compatibility

  • Fetched metadata is validated for a non-empty title, positive citation ID, and agreement between requested and returned paper IDs.
  • Future database schemas are protected. Schema-changing and writing operations reject a database newer than the installed package without downgrading it.

MCP Server

  • SSE transport. nber-cli mcp-server --transport sse starts the new SSE transport.
  • Custom ports require confirmation. nber-cli mcp-server --transport streamable-http --port 8080 --yes starts the HTTP transport on the requested port; omitting --yes on a non-default port exits with a clear error.

Agent Plugins

  • Plugin metadata is synchronized. Claude and Codex plugin manifests plus the Claude marketplace metadata share the package version.
  • Claude skill path is case-correct. The plugin points to the tracked ./skills/NBER-CLI directory, which matters on case-sensitive filesystems.

Installation

uv tool install nber-cli==0.5.0
# or
pip install nber-cli==0.5.0
# or
uvx nber-cli==0.5.0

Full Changelog: v0.4.0...v0.5.0
Download: v0.5.0 Release

v0.4.0

Choose a tag to compare

@SepineTam SepineTam released this 04 Jun 08:43

NBER CLI v0.4.0 Release Notes

What's New

Configurable Info Cache

  • info cache is now user-controllable. Toggle it on or off, set a refresh interval, and clean entries without dropping into SQL. Settings persist in ~/.nber-cli/config.json and apply to both the CLI and the MCP get_paper_info tool.
  • nber-cli info <id> --refresh bypasses the cache and re-fetches from NBER. The fresh data is written back when the cache is enabled.
  • config_store module centralizes read/write of ~/.nber-cli/config.json and is now public API, along with InfoCacheSettings and the get_* / set_* helpers.

Installation

uv tool install nber-cli==0.4.0
# or
pip install nber-cli==0.4.0
# or
uvx nber-cli

Full Changelog: v0.3.1...v0.4.0
Download: v0.4.0 Release

v0.3.1

Choose a tag to compare

@SepineTam SepineTam released this 03 Jun 14:17

NBER CLI v0.3.1 Release Notes

What's New

Unified Local Database

  • db init / db migrate promoted to top-level subcommands, replacing feed init and feed migrate. The local SQLite database is now the single store for the RSS feed cache, behavior logs, and paper metadata cache.
  • Default database renamed from feed.db to nber.db. Existing ~/.nber-cli/feed.db installations keep working without manual steps; the schema is upgraded from v1 to v2 on first use.
  • Schema version recorded in ~/.nber-cli/config.json to support future migrations.

Installation

uv tool install nber-cli==0.3.1
# or
pip install nber-cli==0.3.1
# or
uvx nber-cli

Full Changelog: v0.3.0...v0.3.1
Download: v0.3.1 Release

v0.3.0

Choose a tag to compare

@SepineTam SepineTam released this 03 Jun 07:36

NBER CLI v0.3.0 Release Notes

What's New

Feed Cache Commands

  • feed init — Create a local SQLite cache for NBER's new working papers RSS feed.
  • feed fetch — Fetch the RSS feed, cache seen items, and show newly discovered papers. Supports --max-items, --display-all, and JSON output.
  • feed migrate — Move the feed cache database and update ~/.nber-cli/config.json.
  • feed clean — Clean cached records by age, date range, or all records with confirmation.
  • Python API and docs — Added feed cache helpers, data models, and English/Chinese documentation.

Installation

uv tool install nber-cli==0.3.0
# or
pip install nber-cli==0.3.0
# or
uvx nber-cli

Full Changelog: v0.2.0...v0.3.0
Download: v0.3.0 Release

v0.2.0

Choose a tag to compare

@SepineTam SepineTam released this 31 May 05:37

NBER CLI v0.2.0 Release Notes

What's New

CLI Commands

  • download — Fetch PDFs by ID. Supports --batch for multiple papers, --file for explicit paths, --save-base for directory.
  • info — Show paper metadata. Use --all for full details, --format json for JSON output.
  • search — Search by title, author, keyword. Filter by date range, paginate with --per-page.
  • mcp-server — Run as stdio MCP server for AI agent integration. Supports --transport switching.

Installation

pip install nber-cli==0.2.0
# or
uvx nber-cli

Full Changelog: v0.1.4...v0.2.0
Download: v0.2.0 Release

v0.1.4

Choose a tag to compare

@SepineTam SepineTam released this 09 Aug 04:45

NBER CLI v0.1.4 Release Notes

🚀 What's New

This release brings significant improvements to the command-line interface, making the tool more user-friendly and feature-complete.

✨ New Features

🏷️ Version Display

  • Added -v / --version flag to display the current version
  • Version information is dynamically retrieved from package metadata

📖 Enhanced Help System

  • Comprehensive help message with detailed usage examples
  • Structured argument groups for better organization
  • Automatic help display when no arguments are provided
  • Interactive usage examples in help text

🎯 Improved User Experience

  • Smart Argument Handling: Shows help instead of error when no arguments provided
  • Better Error Messages: More informative feedback for invalid inputs
  • Structured CLI: Arguments are now organized into logical groups

🛠️ Technical Improvements

CLI Structure

  • Added __main__.py to support python -m nber_cli usage
  • Improved argument parsing with better validation
  • Added proper exit codes for different scenarios

Code Quality

  • Enhanced type hints and documentation
  • Better error handling and edge case management
  • Code linting and formatting improvements

📋 Usage Examples

# Display version information
nber-cli --version
# Output: NBER CLI v0.1.4

# Display comprehensive help
nber-cli --help

# Download papers with improved CLI
nber-cli -d w1234 w5678
nber-cli --download w1234 --save_path ./papers

🔧 Installation

pip install nber-cli==0.1.4

📁 Files Changed

  • src/nber_cli/__init__.py - Enhanced CLI interface
  • src/nber_cli/__main__.py - Added package entry point
  • pyproject.toml - Version bump to 0.1.4
  • CHANGELOG.md - Comprehensive change log

🎯 Compatibility

  • Python: Requires Python 3.11+
  • Backward Compatible: All existing commands work as before
  • No Breaking Changes: Safe upgrade from v0.1.3

🐛 Bug Fixes

  • Fixed CLI behavior when no arguments are provided
  • Improved error handling for invalid paper IDs
  • Better file path handling across different operating systems

Full Changelog: v0.1.3...v0.1.4

Download: v0.1.4 Release


This release was generated with ❤️ by Claude Code

v0.1.3

Choose a tag to compare

@SepineTam SepineTam released this 27 Jun 15:46

Add WebUI for nber-cli.