DIS Reader v0.1.0
First public preview of the DIS Reader toolkit and terminal UI.
Highlights
- ✅ Self-contained Go service that embeds the DIS JDBC runner, validates connectivity, and exposes typed services for units, invoices, whole goods, and parts inventory.
- ✅ Terminal UI (tview2 + Bubble Tea modes) with authentication flow, logging panel, module system, and the Debug Search modal.
- ✅ Debug Search batching engine that fans SQL templates across FILEC tables, streams progress/events, and can export results to SQLite or CSV with configurable defaults.
- ✅ Configuration plumbing via
disreader.yaml+DISREADER_*env overrides, including theme selection, JDBC port/java path, and debug-search defaults. - ✅ Sample fixtures, documentation, and wiki guides for embedding the backend service in custom CLIs/APIs.
Feature Overview
Core Service
disreader.NewDISReaderServicespins up the bundleddis-runnerJAR, injects config/loggers, and exposes:UnitService: fetch/list units with AS/400-aware sorting/filtering and rich JSON specs (status, pricing, flooring, rental info).InvoiceService: fetch/list FILEC.IAH line items plus new whole goods invoice helpers (FILEC.CUSINV).PartService: mirror parts master data, including pricing tiers, stock positions, and supplier metadata.
- JDBC wrapper guards AS/400 numeric dates (
As400DateExpr) and now decodes epoch-based DATE/TIMESTAMP fields emitted by the runner.
Terminal UI
- WinMan/tview layout with app title, sidebar menus, output pane, and live DIS log stream.
- Optional Bubble Tea UI (set
DISREADER_UI=bubble) for charm-style workflows. - Module system (
types.ViewModule) currently ships the Debug Search view and can be extended viacmd/debugstyle packages.
Debug Search Module
- Presents a guided modal for batching curated queries (from
internal/queries.sql) against DIS. - Streams
ProgressStatus+TableEventchannels to the UI and any downstream consumers. - Supports SQLite or CSV output with defaults from config/env (
debugSearch.defaultOutputMode/defaultOutputPath).
Configuration & Tooling
config.go+types/config.godefine the full UI + DIS config schema with sane defaults and env overrides.disreader.yamltemplate included; non-UI consumers can reuseNewConfig()or build configs manually.- Wiki docs (
wiki/*.md) cover service embedding, unit/invoice data models, and debug search internals.
Fixes in v0.1.0
- Decode epoch-formatted timestamps returned by the JDBC runner so AS/400 DATE/TIMESTAMP columns hydrate correctly without warning spam.
- Update the in-app semantic version display to
0.1.0to match this release.
Next Steps
- Expand module library (parts lookup UI, diagnostics).
- Harden API surface for remote consumers (gRPC/HTTP wrappers).
- Broaden test coverage around JDBC date handling and UI interactions.