Releases: SepineTam/nber-cli
Releases · SepineTam/nber-cli
Release list
v0.8.0
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_serverpackage. The HTTP service is now split into its own package while continuing to reuse the existingnber_clicore and SQLite database. - New entry points. The
serverextra addsnber-serverandnber-sidecarcommands for running the loopback FastAPI service. - Alembic-managed migrations. Database schema changes are now managed by Alembic. Schema v3 adds the
read_statustable, and existing v1 and v2 databases upgrade automatically without losing records.
Diagnostics
- New
nber-cli doctorcommand. 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. Refreshesuvxcaches or upgrades installations detected asuv tool,pipx, orpip.
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.0To 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
NBER CLI v0.7.0 Release Notes
What's New
Logging and Debugging
- Global
--verboseflag. Runningnber-cli --verbose <command>emits debug-level logs to stderr and to the rotating log file. NBER_CLI_DEBUG=1environment variable. An alternative way to enable debug output without typing--verboseevery 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.0Full Changelog: v0.6.0...v0.7.0
Download: v0.7.0 Release
v0.6.0
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.dbin CLI arguments and configuration. db initanddb migrateacceptsqlite:///URLs. The--db-pathargument andnew_db_pathpositional argument now parse URLs and file paths uniformly.- Transactions are explicit. Feed fetches, cache cleanups, and logging writes open a SQLAlchemy
Sessionand commit before returning. - Schema management is centralized. Table creation and migrations use SQLModel metadata instead of hand-written
CREATE TABLEstatements.
Configuration
config.schema.jsonnow describes the database path as a "Path or sqlite:/// URL."
Dependencies
- Added
sqlmodel>=0.0.24and 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.0Full Changelog: v0.5.0...v0.6.0
Download: v0.6.0 Release
v0.5.0
NBER CLI v0.5.0 Release Notes
What's New
Security Hardening
- RSS parsing is now protected against XXE attacks. The feed parser uses
defusedxmlinstead 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 falseto opt out per invocation. Thedownload.restrict_dirconfig key is stored and validated, but the current CLI default remainstrue. - Database paths are constrained to your home directory on Unix.
db initanddb migratereject paths outside$HOMEon 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 configsubcommand:show,get <key>,set <key> <value>, andverifymake it easy to inspect and edit~/.nber-cli/config.jsonwithout touching the file directly. - JSON Schema validation is shipped in the package as
config.schema.json;config verifyvalidates 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, andvalidate_config.
Download and Feed Improvements
- Concurrent downloads are capped. The new
download.concurrencysetting defaults to3; use--concurrency/-cto 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 ssestarts the new SSE transport. - Custom ports require confirmation.
nber-cli mcp-server --transport streamable-http --port 8080 --yesstarts the HTTP transport on the requested port; omitting--yeson 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-CLIdirectory, 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.0Full Changelog: v0.4.0...v0.5.0
Download: v0.5.0 Release
v0.4.0
NBER CLI v0.4.0 Release Notes
What's New
Configurable Info Cache
infocache 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.jsonand apply to both the CLI and the MCPget_paper_infotool.nber-cli info <id> --refreshbypasses the cache and re-fetches from NBER. The fresh data is written back when the cache is enabled.config_storemodule centralizes read/write of~/.nber-cli/config.jsonand is now public API, along withInfoCacheSettingsand theget_*/set_*helpers.
Installation
uv tool install nber-cli==0.4.0
# or
pip install nber-cli==0.4.0
# or
uvx nber-cliFull Changelog: v0.3.1...v0.4.0
Download: v0.4.0 Release
v0.3.1
NBER CLI v0.3.1 Release Notes
What's New
Unified Local Database
db init/db migratepromoted to top-level subcommands, replacingfeed initandfeed 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.dbtonber.db. Existing~/.nber-cli/feed.dbinstallations keep working without manual steps; the schema is upgraded from v1 to v2 on first use. - Schema version recorded in
~/.nber-cli/config.jsonto support future migrations.
Installation
uv tool install nber-cli==0.3.1
# or
pip install nber-cli==0.3.1
# or
uvx nber-cliFull Changelog: v0.3.0...v0.3.1
Download: v0.3.1 Release
v0.3.0
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-cliFull Changelog: v0.2.0...v0.3.0
Download: v0.3.0 Release
v0.2.0
NBER CLI v0.2.0 Release Notes
What's New
CLI Commands
download— Fetch PDFs by ID. Supports--batchfor multiple papers,--filefor explicit paths,--save-basefor directory.info— Show paper metadata. Use--allfor full details,--format jsonfor 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--transportswitching.
Installation
pip install nber-cli==0.2.0
# or
uvx nber-cliFull Changelog: v0.1.4...v0.2.0
Download: v0.2.0 Release
v0.1.4
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/--versionflag 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__.pyto supportpython -m nber_cliusage - 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 interfacesrc/nber_cli/__main__.py- Added package entry pointpyproject.toml- Version bump to 0.1.4CHANGELOG.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