Skip to content

lukasmalkmus/1nitetent

v0.6.4MIT

Query free one-night camping spots from 1nitetent.com via CLI and MCP

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

0.6.4 - 2026-10-30

Added

  • Add portable Agent Plugins 1.0 packaging and an Agent Skills workflow while retaining Claude Code integration.

Fixed

  • Start the bundled MCP launcher in Codex without relying on Claude-specific executable-path expansion.
  • Keep the portable MCP cache in the plugin's persistent data directory.
  • Remove temporary download files before starting the CLI.

Security

  • Update rustls-webpki to 0.103.16 and webpki-root-certs to 1.0.10 to reject distrusted certificate intermediates (RUSTSEC-2026-0382 and RUSTSEC-2026-0383).
  • Update ctutils to 0.4.4 to fix non-constant-time operations (RUSTSEC-2026-0385).

0.6.3 - 2026-10-19

Changed

  • The x86_64 Linux binary needs glibc 2.18 or later, down from 2.39 in 0.6.2.
  • Bump direct dependencies: schemars 1.2.3, serde_json 1.0.154, tokio 1.53.3, zip 9.0.5. Refresh transitive dependencies via cargo update.

Security

  • zip 9 closes RUSTSEC-2026-0367 to RUSTSEC-2026-0369. These advisories affect ZipArchive::extract and ZipStreamReader::extract, which 1nt does not call.
  • rustls 0.23.46 closes RUSTSEC-2026-0346 to RUSTSEC-2026-0349. RUSTSEC-2026-0349 covers an unauthenticated ServerHello that downgrades later connections to classical key exchange.

0.6.2 - 2026-10-07

Fixed

  • Drop the literal <system-reminder> tag from the skill nudge hook text. Claude Code already wraps hook context in that tag and, since 2.1.292, escapes a tag that a hook writes, so Claude saw an escaped tag instead of a plain hint.
  • Quote the plugin root in the hook commands. The hooks failed with exit 127 when the plugin directory path contained a space.

Changed

  • Bump direct dependencies: clap 4.6.7, comfy-table 8.0.1, reqwest 0.13.5, rmcp 3.5.1, thiserror 2.0.21, tokio 1.53.2. Refresh transitive dependencies via cargo update. This moves rustls to 0.23.45, which closes RUSTSEC-2026-0285, TLS 1.3 handshake messages accepted across encryption level boundaries.
  • The MCP server answers an initialize request for protocol 2026-07-28 with 2025-11-25, the newest revision that still has an initialize handshake (rmcp 3.5). Clients on 2026-07-28 use server/discover and per-request metadata, which work as before.

0.6.1 - 2026-08-24

Changed

  • Refresh dependencies via cargo update, including rmcp 3.1.4. This moves h2 to 0.4.18, which closes RUSTSEC-2026-0258, an unbounded queue of empty HTTP/2 DATA frames.

0.6.0 - 2026-08-13

Changed

  • The MCP server speaks protocol 2026-07-28. Older clients still negotiate 2025-06-18.
  • Truncated table cells now end with … instead of ... (comfy-table 8).

Fixed

  • Removed a latent abort on 1nt refresh and any command that had to populate a cold cache. The cache fetches over a blocking HTTP client that owns a runtime, and main dropped it inside an async context. Release builds, which is what the published binaries are, happened to survive this. Debug builds hit it every time, on the CLI and on the MCP server.

0.5.3 - 2026-06-17

Fixed

  • Resolve the bundled MCP server via ${CLAUDE_PLUGIN_ROOT}/bin/1nt instead of a bare 1nt command. Plugin hosts spawn the stdio MCP server without the plugin's bin/ on PATH, so the bare name failed with "Executable not found in $PATH".

Changed

  • Refresh transitive dependencies via cargo update (drops the duplicate thiserror 1.x and the stale windows-sys 0.45 backend).

0.5.2 - 2026-05-28

Changed

  • Bumped direct dependencies: clap 4.6.1, geo 0.33.1, reqwest 0.13.4, serde_json 1.0.150, tokio 1.52.3, zip 8.6.0.
  • Refreshed transitive rand to 0.9.4.

0.5.1 - 2026-05-27

Fixed

  • Refresh transitive rustls-webpki to 0.103.13 to clear RUSTSEC-2026-0104.

0.5.0 - 2026-05-26

Added

  • Add 1nt mcp, a stdio MCP server exposing near, search, spot, list, status, and refresh tools.
  • Add Codex plugin metadata and marketplace packaging alongside the existing Claude Code plugin.

Changed

  • Make the plugin shim and binary-sync hook work with Codex plugin environment variables as well as Claude Code's variables.

0.4.1 - 2026-04-21

Fixed

  • Switch cache TTL constants to Duration::from_hours and the filter check in output.rs to Option::is_none_or, clearing two new clippy lints introduced in Rust 1.95 (duration_suboptimal_units, manual_is_variant_and).
  • Refresh transitive rustls-webpki to 0.103.12 to clear RUSTSEC-2026-0098 and RUSTSEC-2026-0099 (name-constraint handling).

0.4.0 - 2026-04-21

Added

  • Ship bin/1nt shim so the Claude Code plugin works without a separately installed 1nt binary. The shim prefers any user-installed 1nt on PATH; otherwise it reuses (or lazily downloads) a plugin-managed copy from GitHub releases matching the plugin's declared version.
  • Add SessionStart hook (hooks/ensure-binary.sh) that keeps the plugin-managed binary in sync in the background, never blocking session startup.

Notes

  • The shim and hook prefer jq to parse plugin.json but fall back to a pure-bash sed extractor when jq is not on PATH, so first-run works on stock macOS, Alpine, and slim Linux containers.

0.3.0 - 2026-03-30

Changed

  • Bumped actions/checkout from v4 to v6
  • Bumped actions/upload-artifact from v4 to v7
  • Bumped actions/download-artifact from v4 to v8
  • Removed private-repo checks: write permission workaround from CI (repo is now public)

0.2.0 - 2026-03-30

Fixed

  • Geocoding failure now returns exit code 3 (not_found) instead of 1
  • Plugin skill permission now includes unnamespaced Skill(1nitetent) for auto-invocation without user approval
  • CI audit job now has checks: write permission for private repos

Changed

  • Bumped zip dependency from v2 to v8
  • Bumped MSRV from 1.85 to 1.94

0.1.0 - 2026-03-30

Added

  • near command with Haversine distance filtering, Nominatim geocoding, and optional --search text filter
  • search command with case-insensitive text matching and optional --near spatial filter
  • spot command for full detail view with HTML-stripped descriptions
  • list command with configurable limit
  • refresh command for forced cache re-download and re-enrichment
  • version command showing cache status and spot count
  • GeoJSON caching with 1-day TTL
  • GeoNames reverse geocoding with 30-day TTL, admin1 name resolution
  • Output formats: table (TTY default), JSON (pipe default), NDJSON
  • Field filtering with -F flag
  • Structured JSON error output for agent consumption
  • Semantic exit codes (0-5)
  • Claude Code plugin with pre-approved permissions
  • Skill with decision tree and compound query documentation
  • PostToolUse nudge hook for skill discovery