# Changelog ## 2025-11-23 - 4.0.0 - BREAKING CHANGE(Smarts3) Migrate Smarts3 configuration to nested server/storage objects and remove legacy flat config support - Smarts3.createAndStart() and Smarts3 constructor now accept ISmarts3Config with nested `server` and `storage` objects. - Removed support for the legacy flat config shape (top-level `port` and `cleanSlate`) / ILegacySmarts3Config. - Updated tests to use new config shape (server:{ port, silent } and storage:{ cleanSlate }). - mergeConfig and Smarts3Server now rely on the nested config shape; consumers must update their initialization code. ## 2025-11-23 - 3.2.0 - feat(multipart) Add multipart upload support with MultipartUploadManager and controller integration - Introduce MultipartUploadManager (ts/classes/multipart-manager.ts) to manage multipart upload lifecycle and store parts on disk - Wire multipart manager into server and request context (S3Context, Smarts3Server) and initialize multipart storage on server start - Add multipart-related routes and handlers in ObjectController: initiate (POST ?uploads), upload part (PUT ?partNumber&uploadId), complete (POST ?uploadId), and abort (DELETE ?uploadId) - On complete, combine parts into final object and store via existing FilesystemStore workflow - Expose multipart manager on Smarts3Server for controller access ## 2025-11-23 - 3.1.0 - feat(logging) Add structured Logger and integrate into Smarts3Server; pass full config to server - Introduce a new Logger class (ts/classes/logger.ts) providing leveled logging (error, warn, info, debug), text/json formats and an enable flag. - Integrate Logger into Smarts3Server: use structured logging for server lifecycle events, HTTP request/response logging and S3 errors instead of direct console usage. - Smarts3 now passes the full merged configuration into Smarts3Server (config.logging can control logging behavior). - Server start/stop messages and internal request/error logs are emitted via the Logger and respect the configured logging level/format and silent option. ## 2025-11-23 - 3.0.4 - fix(smarts3) Use filesystem store for bucket creation and remove smartbucket runtime dependency - Switched createBucket to call the internal FilesystemStore.createBucket instead of using @push.rocks/smartbucket - Made Smarts3Server.store public so Smarts3 can access the filesystem store directly - Removed runtime import/export of @push.rocks/smartbucket from plugins and moved @push.rocks/smartbucket to devDependencies in package.json - Updated createBucket to return a simple { name } object after creating the bucket via the filesystem store ## 2025-11-23 - 3.0.3 - fix(filesystem) Migrate filesystem implementation to @push.rocks/smartfs and add Web Streams handling - Replace dependency @push.rocks/smartfile with @push.rocks/smartfs and update README references - plugins: instantiate SmartFs with SmartFsProviderNode and export smartfs (remove direct fs export) - Refactor FilesystemStore to use smartfs directory/file APIs for initialize, reset, list, read, write, copy and delete - Implement Web Stream ↔ Node.js stream conversion for uploads/downloads (Readable.fromWeb and writer.write with Uint8Array) - Persist and read metadata (.metadata.json) and cached MD5 (.md5) via smartfs APIs - Update readme.hints and documentation to note successful migration and next steps ## 2025-11-21 - 3.0.2 - fix(smarts3) Prepare patch release 3.0.2 — no code changes detected - No source changes in the diff - Bump patch version from 3.0.1 to 3.0.2 for maintenance/release bookkeeping ## 2025-11-21 - 3.0.1 - fix(readme) Add Issue Reporting and Security section to README - Add guidance to report bugs, issues, and security vulnerabilities via community.foss.global - Inform developers how to sign a contribution agreement and get a code.foss.global account to submit pull requests ## 2025-11-21 - 3.0.0 - BREAKING CHANGE(Smarts3) Remove legacy s3rver backend, simplify Smarts3 server API, and bump dependencies - Remove legacy s3rver backend: s3rver and its types were removed from dependencies and are no longer exported from plugins. - Simplify Smarts3 API: removed useCustomServer option; Smarts3 now always uses the built-in Smarts3Server (s3Instance is Smarts3Server) and stop() always calls Smarts3Server.stop(). - Update README to remove legacy s3rver compatibility mention. - Dependency updates: bumped @push.rocks/smartbucket to ^4.3.0 and @push.rocks/smartxml to ^2.0.0 (major upgrades), removed s3rver/@types/s3rver, bumped @aws-sdk/client-s3 to ^3.937.0 and @git.zone/tstest to ^3.1.0. ## 2025-11-21 - 2.3.0 - feat(smarts3-server) Introduce native custom S3 server implementation (Smarts3Server) with routing, middleware, context, filesystem store, controllers and XML utilities; add SmartXml and AWS SDK test; keep optional legacy s3rver backend. - Add Smarts3Server: native, Node.js http-based S3-compatible server (ts/classes/smarts3-server.ts) - New routing and middleware system: S3Router and MiddlewareStack for pattern matching and middleware composition (ts/classes/router.ts, ts/classes/middleware-stack.ts) - Introduce request context and helpers: S3Context for parsing requests, sending responses and XML (ts/classes/context.ts) - Filesystem-backed storage: FilesystemStore with bucket/object operations, streaming uploads, MD5 handling and Windows-safe key encoding (ts/classes/filesystem-store.ts) - S3 error handling: S3Error class that maps S3 error codes and produces XML error responses (ts/classes/s3-error.ts) - Controllers for service, bucket and object operations with S3-compatible XML responses and copy/range support (ts/controllers/*.ts) - XML utilities and SmartXml integration for consistent XML generation/parsing (ts/utils/xml.utils.ts, ts/plugins.ts) - Expose native plugins (http, crypto, url, fs) and SmartXml via plugins.ts - ts/index.ts: add useCustomServer option, default to custom server, export Smarts3Server and handle start/stop for both custom and legacy backends - Add AWS SDK v3 integration test (test/test.aws-sdk.node.ts) to validate compatibility - package.json: add @aws-sdk/client-s3 devDependency and @push.rocks/smartxml dependency - Documentation: readme.md updated to describe native custom server and legacy s3rver compatibility ## 2025-11-20 - 2.2.7 - fix(core) Update dependencies, code style and project config; add pnpm overrides and ignore AI folders - Bump devDependencies and runtime dependencies (@git.zone/*, @push.rocks/*, @tsclass/tsclass, s3rver) to newer compatible versions - Add pnpm.overrides entry to package.json and normalize repository URL format - Code style and formatting fixes in TypeScript sources (ts/index.ts, ts/00_commitinfo_data.ts): whitespace, trailing commas, parameter formatting and minor API-return typing preserved - tsconfig.json: simplify compiler options and compact exclude list - Update .gitignore to add AI-related folders (.claude/, .serena/) to avoid accidental commits - Documentation and changelog formatting tweaks (readme.md, changelog.md, npmextra.json) — whitespace/newline cleanups and expanded changelog entries ## 2025-08-16 - 2.2.6 - fix(Smarts3) Allow overriding S3 descriptor; update dependencies, test config and documentation - ts/index.ts: getS3Descriptor now accepts an optional Partial to override defaults (backwards compatible) - package.json: updated devDependencies and runtime dependency versions (tstest, smartpath, tsclass, s3rver, etc.) and added packageManager field - package.json: expanded test script to run tstest with --web --verbose --logfile --timeout 60 - test/test.ts: test instance port changed to 3333 - readme.md: major rewrite and expansion of usage examples, API reference and guides - added project config files: .claude/settings.local.json and .serena/project.yml ## 2024-11-06 - 2.2.5 - fix(ci) Corrected docker image URLs in Gitea workflows to match the correct domain format. - Updated IMAGE environment variable in .gitea/workflows/default_nottags.yaml - Updated IMAGE environment variable in .gitea/workflows/default_tags.yaml ## 2024-11-06 - 2.2.4 - fix(core) Improve code style and update dependencies - Updated @push.rocks/tapbundle to version ^5.4.3 in package.json. - Fixed markdown formatting in readme.md. - Improved code consistency in ts/00_commitinfo_data.ts, ts/plugins.ts, and test/test.ts. ## 2024-11-06 - 2.2.3 - fix(core) Fix endpoint address from 'localhost' to '127.0.0.1' for better compatibility in Smarts3.getS3Descriptor - Corrected the endpoint address in Smarts3.getS3Descriptor to ensure proper functioning across different environments. ## 2024-11-06 - 2.2.2 - fix(core) Fixed function call for fastPut in the test suite to ensure proper file upload handling. - Updated dependencies in package.json to newer versions. - Corrected the function call in test suite for file upload. ## 2024-10-26 - 2.2.1 - fix(core) Fix import and typings for improved compatibility - Corrected the type signature for `getS3Descriptor` to return `IS3Descriptor`. - Fixed import structure and updated dependencies for consistent namespace usage across plugins. ## 2024-10-26 - 2.2.0 - feat(ci) Migrate CI/CD workflow from GitLab CI to Gitea CI - Added new Gitea CI workflows for both non-tag and tag-based pushes - Removed existing GitLab CI configuration ## 2024-05-29 - 2.1.1 - Updates and minor changes Updates and changes based on minor configuration improvements and organizational shifts. - Updated description file. - Updated tsconfig settings. - Updated npmextra.json with new githost configuration. - Shifted to new organizational scheme. ## 2022-07-30 - 2.1.0 - Core improvements and fixes Minor improvements and important core changes. - Removed tslint from the core setup. ## 2022-07-30 - 2.0.2 - Bucket creation improvement Enhanced file structure management. - Improved bucket creation to store locally within the .nogit directory. ## 2022-04-14 - 2.0.0 to 2.0.1 - Structural updates and fixes This release focused on core updates and structural changes. - Reformatted the project structure. - Core updates with minor fixes. ## 2021-12-20 - 1.0.10 - ESM Transition Breaking changes and minor fixes, transitioning to ES Modules. - BREAKING CHANGE: Transitioned core setup to ESM.