feat(logging): Enhance logging and module publishing with color-coded output, progress tracking, and improved CLI startup
This commit is contained in:
BIN
.serena/cache/typescript/document_symbols_cache_v23-06-25.pkl
vendored
Normal file
BIN
.serena/cache/typescript/document_symbols_cache_v23-06-25.pkl
vendored
Normal file
Binary file not shown.
31
.serena/memories/code_style_conventions.md
Normal file
31
.serena/memories/code_style_conventions.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Code Style and Conventions
|
||||
|
||||
## Naming Conventions
|
||||
- Interfaces prefixed with `I` (e.g., `ITsPublishJson`)
|
||||
- Types prefixed with `T` (when applicable)
|
||||
- All filenames in lowercase
|
||||
- Class files named as `classes.<classname>.ts`
|
||||
- Test files named as `test.<name>.ts` or `*.both.ts`, `*.node.ts`, `*.browser.ts`
|
||||
|
||||
## Import Style
|
||||
- Module dependencies imported via `ts/plugins.ts`
|
||||
- Use full path references: `plugins.myModule.myClass()`
|
||||
- Import TypeScript files directly in tests, never compiled JavaScript
|
||||
|
||||
## Code Patterns
|
||||
- Async/await preferred over callbacks
|
||||
- Classes for main logic (TsPublish, PublishModule)
|
||||
- Centralized logging via `logging.ts`
|
||||
- Plugins pattern for external dependencies
|
||||
|
||||
## TypeScript Conventions
|
||||
- Use type annotations
|
||||
- Export classes and functions explicitly
|
||||
- Module exports through index.ts
|
||||
- Interfaces in separate interfaces/ directory
|
||||
|
||||
## File Organization
|
||||
- Source code in `ts/` directory
|
||||
- Tests in `test/` directory
|
||||
- Compiled output in `dist_ts/`
|
||||
- No uppercase in filenames
|
49
.serena/memories/logging_improvements_2025.md
Normal file
49
.serena/memories/logging_improvements_2025.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Logging Improvements - January 2025
|
||||
|
||||
## Overview
|
||||
Enhanced TSPublish logging system with @push.rocks/smartlog and @push.rocks/consolecolor for better visual feedback and user experience.
|
||||
|
||||
## Changes Made
|
||||
|
||||
### 1. Dependencies
|
||||
- Added @push.rocks/consolecolor (v2.0.3) for colored console output
|
||||
|
||||
### 2. Enhanced logging.ts
|
||||
- Created color-coded log level indicators with emojis
|
||||
- Added specialized logging functions:
|
||||
- `logInfo()` - Cyan info messages
|
||||
- `logSuccess()` - Green success messages
|
||||
- `logWarn()` - Orange warning messages
|
||||
- `logError()` - Red error messages
|
||||
- `logStart()` - Blue start indicators
|
||||
- `logDone()` - Green completion indicators
|
||||
- `logPackage()` - Package-specific messages with icons
|
||||
- `logBuild()` - Build messages with hammer icon
|
||||
- `logPublish()` - Publish messages with rocket icon
|
||||
- `logOngoing()` - Ongoing operations with spinner icon
|
||||
- Added visual helpers:
|
||||
- `logSeparator()` - Cyan line separator
|
||||
- `logHeader()` - Colored section headers
|
||||
- `logProgress()` - Progress bar with percentage
|
||||
|
||||
### 3. Updated classes.tspublish.ts
|
||||
- Added colored header at startup
|
||||
- Module discovery uses colored bullets
|
||||
- Progress tracking for module processing
|
||||
- Better visual separation between phases
|
||||
|
||||
### 4. Updated classes.publishmodule.ts
|
||||
- Added visual indicators for each operation phase
|
||||
- Build process shows building status and completion
|
||||
- Publishing shows rocket icon and success message
|
||||
- NPM registry checks have clearer warnings
|
||||
|
||||
### 5. Updated index.ts
|
||||
- Replaced console.log with logStart()
|
||||
|
||||
## Benefits
|
||||
- Clearer visual hierarchy of information
|
||||
- Easier to track progress through long operations
|
||||
- Better distinction between info, warnings, and errors
|
||||
- More professional and polished CLI output
|
||||
- Semantic icons make status immediately recognizable
|
45
.serena/memories/project_overview.md
Normal file
45
.serena/memories/project_overview.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# TSPublish Project Overview
|
||||
|
||||
## Purpose
|
||||
TSPublish is a tool designed to publish multiple, concise, and small packages from monorepos, specifically for TypeScript projects within a git environment. It helps manage and automate the publishing of individual packages from a monorepo structure.
|
||||
|
||||
## Tech Stack
|
||||
- **Language**: TypeScript
|
||||
- **Runtime**: Node.js
|
||||
- **Package Manager**: pnpm (v10.11.0)
|
||||
- **Build Tool**: @git.zone/tsbuild
|
||||
- **Testing**: @git.zone/tstest with @push.rocks/tapbundle
|
||||
- **CLI Framework**: @push.rocks/smartcli
|
||||
- **Logging**: @push.rocks/smartlog (currently basic usage)
|
||||
|
||||
## Main Dependencies
|
||||
- @push.rocks/smartcli - CLI interface
|
||||
- @push.rocks/smartdelay - Delay utilities
|
||||
- @push.rocks/smartfile - File operations
|
||||
- @push.rocks/smartlog - Logging
|
||||
- @push.rocks/smartnpm - NPM registry interactions
|
||||
- @push.rocks/smartpath - Path utilities
|
||||
- @push.rocks/smartrequest - HTTP requests
|
||||
- @push.rocks/smartshell - Shell command execution
|
||||
|
||||
## Project Structure
|
||||
- `ts/` - TypeScript source files
|
||||
- `index.ts` - Main entry point
|
||||
- `classes.tspublish.ts` - Main TsPublish class
|
||||
- `classes.publishmodule.ts` - PublishModule class for individual packages
|
||||
- `classes.giteaassets.ts` - Gitea assets management
|
||||
- `logging.ts` - Logger configuration
|
||||
- `plugins.ts` - External dependencies
|
||||
- `paths.ts` - Path constants
|
||||
- `interfaces/` - TypeScript interfaces
|
||||
- `test/` - Test files
|
||||
- `dist_ts/` - Compiled JavaScript output
|
||||
- `cli.js` - CLI entry point (bin script)
|
||||
|
||||
## Key Features
|
||||
1. Scans monorepo for directories starting with "ts"
|
||||
2. Validates packages via tspublish.json files
|
||||
3. Creates package.json dynamically for each module
|
||||
4. Builds TypeScript code before publishing
|
||||
5. Checks npm registry for version conflicts
|
||||
6. Publishes packages to npm registry
|
34
.serena/memories/suggested_commands.md
Normal file
34
.serena/memories/suggested_commands.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Suggested Commands for TSPublish Development
|
||||
|
||||
## Build & Test Commands
|
||||
- `pnpm build` - Build the TypeScript project (runs tsbuild --web --allowimplicitany)
|
||||
- `pnpm test` - Run the test suite (runs tstest test/ --web)
|
||||
- `pnpm buildDocs` - Generate documentation (runs tsdoc)
|
||||
|
||||
## Development Commands
|
||||
- `tsx ts/index.ts` - Run the main entry point directly
|
||||
- `tsx test/test.ts` - Run specific test file
|
||||
- `tstest test/test.some.ts --verbose` - Run specific test with verbose output
|
||||
- `tsbuild check test/**/* --skiplibcheck` - Type check test files
|
||||
|
||||
## Package Management
|
||||
- `pnpm install` - Install dependencies
|
||||
- `pnpm install --save-dev <package>` - Install dev dependency
|
||||
- `pnpm add <package>` - Add production dependency
|
||||
|
||||
## Git Commands (Linux)
|
||||
- `git status` - Check repository status
|
||||
- `git diff` - View changes
|
||||
- `git log` - View commit history
|
||||
- `git mv <old> <new>` - Move/rename files preserving history
|
||||
|
||||
## File System Commands (Linux)
|
||||
- `ls` - List directory contents
|
||||
- `cd` - Change directory
|
||||
- `find` - Find files
|
||||
- `grep` - Search file contents
|
||||
- `cat` - Display file contents
|
||||
|
||||
## CLI Usage
|
||||
- `./cli.js` - Run the tspublish CLI
|
||||
- `node cli.js` - Alternative way to run CLI
|
29
.serena/memories/task_completion_checklist.md
Normal file
29
.serena/memories/task_completion_checklist.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Task Completion Checklist
|
||||
|
||||
When completing any development task on TSPublish:
|
||||
|
||||
## 1. Build Verification
|
||||
- Run `pnpm build` to ensure TypeScript compiles without errors
|
||||
- No use of --skiplibcheck flag
|
||||
|
||||
## 2. Test Execution
|
||||
- Run `pnpm test` to verify all tests pass
|
||||
- For specific test files: `tsx test/test.specific.ts`
|
||||
|
||||
## 3. Type Checking
|
||||
- Type check test files: `tsbuild check test/**/* --skiplibcheck`
|
||||
- Type check source files: `pnpm build`
|
||||
|
||||
## 4. Code Quality
|
||||
- Ensure changes are focused and goal-oriented
|
||||
- Verify no unnecessary modifications were made
|
||||
- Check that code follows existing patterns and conventions
|
||||
|
||||
## 5. Documentation
|
||||
- Update readme.hints.md if new insights discovered
|
||||
- Update readme.plan.md if working from a plan
|
||||
|
||||
## 6. Version Control
|
||||
- Use `git mv` for file renames to preserve history
|
||||
- Make small, focused commits
|
||||
- Never commit without explicit user request
|
68
.serena/project.yml
Normal file
68
.serena/project.yml
Normal file
@@ -0,0 +1,68 @@
|
||||
# language of the project (csharp, python, rust, java, typescript, go, cpp, or ruby)
|
||||
# * For C, use cpp
|
||||
# * For JavaScript, use typescript
|
||||
# Special requirements:
|
||||
# * csharp: Requires the presence of a .sln file in the project folder.
|
||||
language: typescript
|
||||
|
||||
# whether to use the project's gitignore file to ignore files
|
||||
# Added on 2025-04-07
|
||||
ignore_all_files_in_gitignore: true
|
||||
# list of additional paths to ignore
|
||||
# same syntax as gitignore, so you can use * and **
|
||||
# Was previously called `ignored_dirs`, please update your config if you are using that.
|
||||
# Added (renamed)on 2025-04-07
|
||||
ignored_paths: []
|
||||
|
||||
# whether the project is in read-only mode
|
||||
# If set to true, all editing tools will be disabled and attempts to use them will result in an error
|
||||
# Added on 2025-04-18
|
||||
read_only: false
|
||||
|
||||
|
||||
# list of tool names to exclude. We recommend not excluding any tools, see the readme for more details.
|
||||
# Below is the complete list of tools for convenience.
|
||||
# To make sure you have the latest list of tools, and to view their descriptions,
|
||||
# execute `uv run scripts/print_tool_overview.py`.
|
||||
#
|
||||
# * `activate_project`: Activates a project by name.
|
||||
# * `check_onboarding_performed`: Checks whether project onboarding was already performed.
|
||||
# * `create_text_file`: Creates/overwrites a file in the project directory.
|
||||
# * `delete_lines`: Deletes a range of lines within a file.
|
||||
# * `delete_memory`: Deletes a memory from Serena's project-specific memory store.
|
||||
# * `execute_shell_command`: Executes a shell command.
|
||||
# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced.
|
||||
# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type).
|
||||
# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type).
|
||||
# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes.
|
||||
# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file or directory.
|
||||
# * `initial_instructions`: Gets the initial instructions for the current project.
|
||||
# Should only be used in settings where the system prompt cannot be set,
|
||||
# e.g. in clients you have no control over, like Claude Desktop.
|
||||
# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol.
|
||||
# * `insert_at_line`: Inserts content at a given line in a file.
|
||||
# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol.
|
||||
# * `list_dir`: Lists files and directories in the given directory (optionally with recursion).
|
||||
# * `list_memories`: Lists memories in Serena's project-specific memory store.
|
||||
# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building).
|
||||
# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context).
|
||||
# * `read_file`: Reads a file within the project directory.
|
||||
# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store.
|
||||
# * `remove_project`: Removes a project from the Serena configuration.
|
||||
# * `replace_lines`: Replaces a range of lines within a file with new content.
|
||||
# * `replace_symbol_body`: Replaces the full definition of a symbol.
|
||||
# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen.
|
||||
# * `search_for_pattern`: Performs a search for a pattern in the project.
|
||||
# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase.
|
||||
# * `switch_modes`: Activates modes by providing a list of their names
|
||||
# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information.
|
||||
# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task.
|
||||
# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed.
|
||||
# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store.
|
||||
excluded_tools: []
|
||||
|
||||
# initial prompt for the project. It will always be given to the LLM upon activating the project
|
||||
# (contrary to the memories, which are loaded on demand).
|
||||
initial_prompt: ""
|
||||
|
||||
project_name: "tspublish"
|
Reference in New Issue
Block a user