Skip to content

feat: add markdown report export and improve desktop CSV paste workflow#16

Merged
rad1092 merged 2 commits into
mainfrom
codex/evaluate-current-project-completion-level
Feb 14, 2026
Merged

feat: add markdown report export and improve desktop CSV paste workflow#16
rad1092 merged 2 commits into
mainfrom
codex/evaluate-current-project-completion-level

Conversation

@rad1092
Copy link
Copy Markdown
Owner

@rad1092 rad1092 commented Feb 14, 2026

Motivation

  • Provide an exportable, human-readable markdown summary of CSV analyses so results can be saved and shared using a simple CLI command (report).
  • Improve the Windows desktop UX so users can analyze CSVs by pasting text when a file is not selected and auto-load opened files into the paste area.
  • Keep streaming summarization behavior (small memory footprint / mixed-type handling) while exposing analysis outputs in both CLI and desktop flows.

Description

  • Added build_markdown_report to bitnet_tools/analysis.py to render a markdown report with column info and numeric statistics.
  • Added a report subcommand in bitnet_tools/cli.py that builds an analysis payload and writes a markdown report file via build_markdown_report.
  • Enhanced the desktop UI (bitnet_tools/desktop.py) to include a CSV text input panel, auto-load file content into that panel when a CSV is opened, and accept either a selected file or pasted CSV text for analysis.
  • Added a desktop entrypoint and helpers: bitnet_desktop.pyw, BitNet_Desktop_Start.bat, and bitnet-desktop script in pyproject.toml, updated README.md to document the new features, and added tests in tests/test_analysis.py and tests/test_cli.py for report generation and CLI behavior.

Testing

  • Ran pytest -q and all tests passed (9 passed).
  • Ran python -m bitnet_tools.cli --help and confirmed the new report subcommand appears in the usage output.
  • Executed python -m bitnet_tools.cli report /tmp/sample.csv --question "요약" --out /tmp/r.md which saved a valid markdown report (inspected with head).
  • A prior manual invocation against a non-existent path (tests/data.csv) raised FileNotFoundError as expected for missing input files.

Codex Task

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 88133c9337

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread bitnet_tools/desktop.py
Comment on lines 147 to +148
question = self._get_question()
csv_text = self.csv_text.get("1.0", "end").strip()
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep Tkinter widget access on the main thread

_analyze_async launches _analyze in a worker thread, but _analyze immediately reads Tk widgets via self.question.get(...) and self.csv_text.get(...); the same off-main-thread pattern is also used in _doctor/_run_model with self.model.get(...). Tkinter is not thread-safe, so these reads can intermittently raise Tcl errors or freeze/crash the desktop app when users click 분석/환경진단/BitNet 실행. Capture UI values on the main thread before starting the worker (or marshal reads via after) and keep background threads limited to non-UI work.

Useful? React with 👍 / 👎.

@rad1092 rad1092 merged commit 4d925e7 into main Feb 14, 2026
4 checks passed
@rad1092 rad1092 deleted the codex/evaluate-current-project-completion-level branch February 14, 2026 13:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant