Commit graph

467 commits

Author SHA1 Message Date
Snider
0ad5c09ee6 feat: add initial project structure with configuration files and components 2026-01-15 22:46:50 +00:00
Snider
8acdb10eb6 Merge branch 'main' into dev
Bring in workspace management and IPC event handling features:
- Workspace management features
- IPC event handling
- Config test improvements
- Display improvements (menu, tray, tests)
- i18n test improvements
- Restored pkg/crypt, pkg/io, pkg/runtime, pkg/workspace

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 15:36:00 +00:00
Snider
4e02d5bc97 refactor: bring external packages home and restructure
- Imported packages from separate repos:
  - github.com/Snider/config -> pkg/config
  - github.com/Snider/display -> pkg/display
  - github.com/Snider/help -> pkg/help
  - github.com/Snider/i18n -> pkg/i18n
  - github.com/Snider/updater -> pkg/updater
- Moved core code from root to pkg/core
- Flattened nested package structures
- Updated all import paths to github.com/Snider/Core/pkg/*
- Added Display interface to Core
- Updated go.work for workspace modules

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 15:30:43 +00:00
Snider
6c366e5ef4 feat(workspace): implement workspace management features and IPC event handling 2026-01-13 23:33:01 +00:00
Snider
60c0d4f6c7 refactor: Update import path for Core and add CLAUDE.md documentation
Signed-off-by: Snider <snider@host.uk.com>
2026-01-04 20:16:52 +00:00
google-labs-jules[bot]
456a5d6864 docs: replace raw AST dumps with descriptive markdown (#34)
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-25 00:09:03 +00:00
Snider
f0f6dafc1d removes interfaces for pkg's moved out of core.
Signed-off-by: Snider <snider@lt.hn>
2025-11-24 23:48:24 +00:00
google-labs-jules[bot]
e4a77cb1ae Implement lifecycle interfaces for Core services (#33)
* Implement Startable and Stoppable lifecycle interfaces

* Refactor tests: remove redundant method overrides in MockLifecycle

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-23 19:27:52 +00:00
google-labs-jules[bot]
44dd023c43 docs: Add comprehensive docstrings to Go files (#31)
This commit adds comprehensive docstrings to all Go files in the root of the repository, achieving 100% documentation coverage. Examples have been included where appropriate to improve clarity.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-14 14:33:58 +00:00
35400ee927 fix(runtime): Correct NewWithFactories service creation loop (#30)
Previously, the `NewWithFactories` function in `runtime_pkg.go` iterated over an empty slice, which prevented any services from being created from the provided factories. This commit fixes the loop to correctly iterate over the keys of the `factories` map, ensuring that services are properly instantiated and registered.

feat(testing): Add Good, Bad, and Ugly tests for NewWithFactories

To improve test quality and ensure the reliability of the `NewWithFactories` function, this commit replaces the existing basic test with a comprehensive test suite following the Good, Bad, Ugly methodology:

- `TestNewWithFactories_Good`: Verifies the happy path, ensuring a service is created and registered successfully.
- `TestNewWithFactories_Bad`: Checks that the function correctly returns an error when a service factory fails.
- `TestNewWithFactories_Ugly`: Confirms that the function panics when a `nil` factory is provided, as this represents an unrecoverable programmer error.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-13 21:23:56 +00:00
e9e71bb9a2 feat: Increase test coverage to over 88% (#29)
This commit increases the test coverage of the Core package to over 88%.

- Adds tests for `ServiceStartup` and `ServiceShutdown` methods in `core.go`.
- Adds tests for `App()`, `Config()`, and `Display()` methods in `core.go`.
- Adds a test for `IsEnabled` in `interfaces.go`.
- Adds tests for `NewServiceRuntime`, `Core()`, and `Config()` in `runtime.go`.
- Adds tests for `NewWithFactories`, `ServiceName`, `ServiceStartup`, and `ServiceShutdown` in `runtime_pkg.go`.
- Removes the unused `core/testutil` directory.
- Rewrites the `TestNewWithFactories_Good` test to correctly validate the original `NewWithFactories` function's behavior.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-13 20:27:41 +00:00
003996b148 refactor: Flatten repository structure (#28)
- Move Go files from core, e, and runtime directories to the project root.
- Unify package declarations to a single 'core' package.
- Update go.work to exclude the cmd directory from the main build.
- Resolve naming conflicts and update import paths.
- Fix tests to work with the new structure.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-13 18:47:46 +00:00
67a38acc7c refactor: Remove unused packages and flatten project structure (#27)
* refactor: Remove unused packages and flatten project structure

Removes the following unused packages:
- pkg/crypt
- pkg/workspace
- pkg/io

Moves the remaining packages (core, e, runtime) to the top level of the project.

Updates all import paths to reflect the new structure.

* refactor: Remove unused packages and flatten project structure

Removes the following unused packages:
- pkg/crypt
- pkg/workspace
- pkg/io

Moves the remaining packages (core, e, runtime) to the top level of the project.

Updates all import paths to reflect the new structure.

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-13 17:26:38 +00:00
614aed51ba refactor: Remove config, display, and i18n packages (#26)
Removes the following unused packages:
- pkg/config
- pkg/display
- pkg/i18n

Also removes the dependencies from pkg/runtime and cleans up the go.mod and go.sum files.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-13 16:45:48 +00:00
623f05ffc1 refactor: Remove pkg/help (#25)
The help package has been moved to its own repository at Snider/help. This commit removes the local copy of the package from this repository and updates the dependencies.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-13 14:28:41 +00:00
1c10c3dff3 Revise README with version notice and project info (#24)
Updated README to reflect current version location and project status.
2025-11-09 17:55:35 +00:00
Snider
09aa39c42c Update web manifest and robots.txt for project rebranding
Signed-off-by: Snider <snider@lt.hn>
2025-11-04 13:13:51 +00:00
Snider
e0cf77c64a Remove unused commands from the development tools
Signed-off-by: Snider <snider@lt.hn>
2025-11-04 13:12:37 +00:00
Snider
5d4e081143 Refactor core tests and improve mock implementations
Signed-off-by: Snider <snider@lt.hn>
2025-11-04 13:12:09 +00:00
Snider
d25bd5c5ca Add GoReleaser configuration and update Go version to 1.25
Signed-off-by: Snider <snider@lt.hn>
2025-11-04 12:00:58 +00:00
Snider
32f1d0ab5d Feature add tdd core tests (#22)
* feat: Add TDD tests for core package

Adds a new `tdd/` directory for TDD-style contract tests.

Implements a comprehensive test suite for the `pkg/core` package, covering:
- `New()`
- `WithService()`
- `WithName()`
- `WithWails()`
- `WithAssets()`
- `WithServiceLock()`
- `RegisterService()`
- `Service()`
- `ServiceFor()`
- `MustServiceFor()`
- `ACTION()`
- `RegisterAction()`
- `RegisterActions()`

To support testing, a public `Assets()` method was added to the `Core` struct.

* feat: Add TDD tests for e, io, runtime, and config packages

Adds comprehensive TDD tests to the `tdd/` directory for the following packages:
- `pkg/e`
- `pkg/io`
- `pkg/runtime`
- `pkg/config`

This significantly improves the test coverage of the project.

To support testing the `runtime` package, the `newWithFactories` function was exported as `NewWithFactories`.

The existing tests for the `config` package were moved from the `internal` package to the `tdd/` directory and adapted to use the public API.

* fix: Update tdd tests for config, core, and runtime

Updates the TDD tests for the `config`, `core`, and `runtime` packages to improve their coverage and correctness.

- In `tdd/config_test.go`, the `TestIsFeatureEnabled` test is updated to use `s.Set` to modify the `features` slice, ensuring that the persistence logic is exercised.
- In `tdd/core_test.go`, the `TestCore_WithAssets_Good` test is updated to use a real embedded filesystem with `//go:embed` to verify the contents of a test file.
- In `tdd/runtime_test.go`, the `TestNew_Good` test is converted to a table-driven test to cover the happy path, error cases, and a case with a non-nil `application.App`.

* fix: Fix build and improve test coverage

This commit fixes a build failure in the `pkg/runtime` tests and significantly improves the test coverage for several packages.

- Fixes a build failure in `pkg/runtime/runtime_test.go` by updating a call to an exported function.
- Moves TDD tests for `config` and `e` packages into their respective package directories to ensure accurate coverage reporting.
- Adds a new test suite for the `pkg/i18n` package, including a test helper to inject a mock i18n bundle.
- Moves and updates tests for the `pkg/crypt` package to use its public API.
- The coverage for `config` and `e` is now 100%.
- The coverage for `crypt` and `i18n` has been significantly improved.

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-02 22:29:17 +00:00
Snider
08532b0a27 Add Codecov badge to README 2025-11-02 22:07:45 +00:00
Snider
b31670b6cf Add Codecov upload step in coverage workflow (#23)
Added step to upload coverage reports to Codecov.
2025-11-02 22:06:05 +00:00
Snider
823c227c41 restores gui
Signed-off-by: Snider <snider@lt.hn>
2025-11-02 18:04:58 +00:00
Snider
e07d08ea90 Add CNAME file for custom domain 2025-11-02 16:29:45 +00:00
dependabot[bot]
dc6375f552 Bump the npm_and_yarn group across 3 directories with 1 update (#21)
Bumps the npm_and_yarn group with 1 update in the /cmd/core-gui/public directory: [esbuild](https://github.com/evanw/esbuild).
Bumps the npm_and_yarn group with 1 update in the /cmd/examples/core-static-di/public directory: [esbuild](https://github.com/evanw/esbuild).
Bumps the npm_and_yarn group with 1 update in the /cmd/examples/core-task-change/public directory: [esbuild](https://github.com/evanw/esbuild).


Updates `esbuild` from 0.21.5 to 0.25.12
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.21.5...v0.25.12)

Updates `esbuild` from 0.21.5 to 0.25.12
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.21.5...v0.25.12)

Updates `esbuild` from 0.21.5 to 0.25.12
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.21.5...v0.25.12)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-version: 0.25.12
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: esbuild
  dependency-version: 0.25.12
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: esbuild
  dependency-version: 0.25.12
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-02 16:26:34 +00:00
dependabot[bot]
75e31dfdcf Bump the go_modules group across 1 directory with 2 updates (#20)
Bumps the go_modules group with 1 update in the /cmd/core directory: [golang.org/x/net](https://github.com/golang/net).


Updates `golang.org/x/net` from 0.25.0 to 0.38.0
- [Commits](https://github.com/golang/net/compare/v0.25.0...v0.38.0)

Updates `github.com/cloudflare/circl` from 1.6.0 to 1.6.1
- [Release notes](https://github.com/cloudflare/circl/releases)
- [Commits](https://github.com/cloudflare/circl/compare/v1.6.0...v1.6.1)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: direct:production
  dependency-group: go_modules
- dependency-name: github.com/cloudflare/circl
  dependency-version: 1.6.1
  dependency-type: indirect
  dependency-group: go_modules
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-02 16:25:40 +00:00
Snider
9e3061751f Add 'dev' branch to workflow triggers 2025-11-02 16:25:18 +00:00
Snider
d5f7764329 Refactor library improvements (#18)
* refactor: Rearchitect library to use runtime and pkg modules

This commit introduces a major architectural refactoring to simplify the library's structure and improve its maintainability.

Key changes include:

- **Simplified Project Structure:** All top-level facade packages (config, crypt, display, etc.) and the root `core.go` have been removed. All library code now resides directly under the `pkg/` directory.

- **Unified Runtime:** A new `pkg/runtime` module with a `New()` constructor has been introduced. This function initializes and wires together all core services, providing a single, convenient entry point for applications.

- **Updated Entry Points:** The `cmd/core-gui` application and all examples have been updated to use the new `runtime.New()` initialization.

- **Internal Packages:** The `config` and `crypt` packages have been refactored to use an `internal` subdirectory for their implementation. This hides private details and exposes a clean, stable public API.

- **Standardized Error Handling:** A new error handling package has been added at `pkg/e`. The `workspace` and `crypt` services have been updated to use this new standard.

- **Improved Feature Flagging:** A `IsFeatureEnabled` method was added to the `config` service for more robust and centralized feature flag checks.

- **CI and Dependencies:**
  - A GitHub Actions workflow has been added for continuous integration.
  - All Go dependencies have been updated to their latest versions.

- **Documentation:** All documentation has been updated to reflect the new, simplified architecture, and obsolete files have been removed.

* refactor: Rearchitect library to use runtime and pkg modules

This commit introduces a major architectural refactoring to simplify the library's structure and improve its maintainability.

Key changes include:

- **Simplified Project Structure:** All top-level facade packages (config, crypt, display, etc.) and the root `core.go` have been removed. All library code now resides directly under the `pkg/` directory.

- **Unified Runtime:** A new `pkg/runtime` module with a `New()` constructor has been introduced. This function initializes and wires together all core services, providing a single, convenient entry point for applications. The runtime now accepts the Wails application instance, ensuring proper integration with the GUI.

- **Updated Entry Points:** The `cmd/core-gui` application and all examples have been updated to use the new `runtime.New()` constructor and correctly register the runtime as a Wails service.

- **Internal Packages:** The `config` and `crypt` packages have been refactored to use an `internal` subdirectory for their implementation. This hides private details and exposes a clean, stable public API.

- **Standardized Error Handling:** A new error handling package has been added at `pkg/e`. The `workspace` and `crypt` services have been updated to use this new standard.

- **Improved Feature Flagging:** A `IsFeatureEnabled` method was added to the `config` service for more robust and centralized feature flag checks.

- **CI and Dependencies:**
  - A GitHub Actions workflow has been added for continuous integration.
  - All Go dependencies have been updated to their latest versions.

- **Documentation:** All documentation has been updated to reflect the new, simplified architecture, and obsolete files have been removed.

* Feature tdd contract testing (#19)

* feat: Implement TDD contract testing for public API

This commit introduces a Test-Driven Development (TDD) workflow to enforce the public API contract. A new `tdd/` directory has been added to house these tests, which are intended to be the starting point for any new features or bug fixes that affect the public interface.

The "Good, Bad, Ugly" testing methodology has been adopted for these tests:
- `_Good` tests verify the "happy path" with valid inputs.
- `_Bad` tests verify predictable errors with invalid inputs.
- `_Ugly` tests verify edge cases and unexpected inputs to prevent panics.

TDD contract tests have been implemented for the `core` and `config` packages, and the `core.New` function has been hardened to prevent panics from `nil` options.

The `README.md` has been updated to document this new workflow.

* feat: Add TDD contract tests for all services

This commit expands the TDD contract testing framework to cover all services in the application. "Good, Bad, Ugly" tests have been added for the `help`, `i18n`, and `workspace` services.

To facilitate testing, the following refactors were made:
- `help`: Added a `SetDisplay` method to allow for mock injection. Hardened `Show` and `ShowAt` to prevent panics.
- `i18n`: Added a `SetBundle` method to allow for loading test-specific localization files.
- `workspace`: Made the `Config` field public and added a `SetMedium` method to allow for mock injection.

The TDD tests for the `crypt` service have been skipped due to issues with PGP key generation in the test environment.

* CLI code-docgen function (#16)

* Refactor CLI structure: move commands to 'dev' package, add docstring generation command, and update Taskfile for new tasks

Signed-off-by: Snider <snider@lt.hn>

* Add CodeRabbit PR review badge to README

Signed-off-by: Snider <snider@lt.hn>

---------

Signed-off-by: Snider <snider@lt.hn>

---------

Signed-off-by: Snider <snider@lt.hn>
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>

* Update pkg/runtime/runtime.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* feat: Rearchitect library and add automated documentation

This commit introduces a major architectural refactoring of the Core library and adds a new, automated documentation system.

**Architectural Changes:**

*   **Unified Runtime:** A new `pkg/runtime` module provides a single `runtime.New()` constructor that initializes and manages all core services. This simplifies application startup and improves maintainability.
*   **Wails Integration:** The `Runtime` is now correctly integrated with the Wails application lifecycle, accepting the `*application.App` instance and being registered as a Wails service.
*   **Simplified Project Structure:** All top-level facade packages have been removed, and library code is now consolidated under the `pkg/` directory.
*   **Internal Packages:** The `config` and `crypt` services now use an `internal` package to enforce a clean separation between public API and implementation details.
*   **Standardized Error Handling:** The `pkg/e` package has been introduced and integrated into the `workspace` and `crypt` services for consistent error handling.
*   **Graceful Shutdown:** The shutdown process has been fixed to ensure shutdown signals are correctly propagated to all services.

**Documentation:**

*   **Automated Doc Generation:** A new `docgen` command has been added to `cmd/core` to automatically generate Markdown documentation from the service source code.
*   **MkDocs Site:** A new MkDocs Material documentation site has been configured in the `/docs` directory.
*   **Deployment Workflow:** A new GitHub Actions workflow (`.github/workflows/docs.yml`) automatically builds and deploys the documentation site to GitHub Pages.

**Quality Improvements:**

*   **Hermetic Tests:** The config service tests have been updated to be fully hermetic, running in a temporary environment to avoid side effects.
*   **Panic Fix:** A panic in the config service's `Set` method has been fixed, and "Good, Bad, Ugly" tests have been added to verify the fix.
*   **CI/CD:** The CI workflow has been updated to use the latest GitHub Actions.
*   **Code Quality:** Numerous smaller fixes and improvements have been made based on CI feedback.

---------

Signed-off-by: Snider <snider@lt.hn>
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-11-02 16:17:25 +00:00
google-labs-jules[bot]
0c3321bfab feat: Add feature system to Core (#17)
This commit introduces a new feature system to the Core struct.

A new `Features` struct is defined in `pkg/core/interfaces.go` with an `IsEnabled` method to check if a feature is enabled.

The `Core` struct is updated to include this new `Features` struct, which is initialized in the `New` function.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-11-02 03:03:54 +00:00
Snider
1f87ec75d1 (#15) feat(openpgp): increase test coverage
Adds new tests to the `pkg/crypt/openpgp` package to cover error handling and edge cases in the `EncryptPGP` and `DecryptPGP` functions.
2025-10-30 23:24:53 +00:00
Snider
41ed9baa12 (#14) feat(openpgp): increase test coverage
Adds new tests to the `pkg/crypt/openpgp` package to cover error handling and edge cases in the `EncryptPGP` and `DecryptPGP` functions.

- Adds a new test file, `encrypt_extra_test.go`, with tests for incorrect passphrases, malformed messages, and signing failures.
- Adds a pre-generated, encrypted PGP key to be used in tests, working around a limitation in the `go-crypto` library that prevents programmatic generation of encrypted keys.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-10-30 22:57:14 +00:00
Snider
3525cdd4cb Dev (#13) 2025-10-30 17:39:51 +00:00
Snider
c0914fd1ed (#12) Add GitHub Actions test coverage and platform-aware Taskfiles 2025-10-30 17:37:48 +00:00
Snider
35024677c2 (#10) GitHub Actions workflow and refactor build and test infrastructure 2025-10-30 16:23:00 +00:00
Snider
2af6c4ad3e Refactor PGP module with helper functions and error handling title (#8) 2025-10-30 14:18:37 +00:00
Snider
20ebafbcc1 Refactor services and tests: update Config, Workspace, Display, and cryptography modules; add test-gen and PWA build support; improve workspace test utilities and mock implementations; and enhance file handling logic.
Signed-off-by: Snider <snider@lt.hn>
2025-10-28 21:42:29 +00:00
Snider
526716a785 Fix import paths in index.md for consistency and clarity
Signed-off-by: Snider <snider@lt.hn>
2025-10-28 12:07:27 +00:00
Snider
3a40c83017 Refactor service documentation to standardize naming conventions and improve clarity
Signed-off-by: Snider <snider@lt.hn>
2025-10-28 12:06:24 +00:00
Snider
89721834ee cmd: core dev api sync - will update the root level go files to reflect the public API's of Core.*
Signed-off-by: Snider <snider@lt.hn>
2025-10-28 12:06:05 +00:00
Snider
5f3e4235aa Rename files and directories for improved structure and accessibility
Signed-off-by: Snider <snider@lt.hn>
2025-10-28 11:10:57 +00:00
Snider
bb94bdf061 Add options type to Config service and improve type assignment error handling; add unit tests for Config functionality 2025-10-28 11:09:38 +00:00
Snider
536ce7b6cd Refactor project structure and add core modules for configuration, cryptography, display, and workspace management 2025-10-28 07:02:21 +00:00
Snider
bd5a08e2a1 Add origin URL to AGENTS.md (#7)
Added origin URL for AGENTS.md
2025-10-27 13:23:15 +00:00
Snider
2c6bb21049 Merge pull request #5 from Snider/dev
Add CLI framework with Cobra, Taskfile, and Bubble Tea UI
2025-10-27 06:33:23 +00:00
Snider
0a3f067971 Fix typo in lipgloss method call: NewNewStyle -> NewStyle 2025-10-27 06:03:42 +00:00
Snider
90009eccd5 Add pre-commit task, CLI enhancements, and ATS updates
- Added `pre-commit` task in Makefile.
- Enhanced CLI with banner display and stricter file selection validation.
- Expanded App Transport Security settings and updated permissions in `Info.dev.plist`.
2025-10-27 05:41:11 +00:00
Snider
3944874c9f Add an initial CLI framework for Core 2025-10-27 05:07:22 +00:00
Snider
71d76a23b4 git keep before a gitignore 2025-10-27 03:39:07 +00:00
Snider
d0c08a6353 git keep before a gitignore 2025-10-27 03:38:27 +00:00