feat: add roadmap document outlining repository management features #243

Merged
fuzzy merged 19 commits from tag/v2.1.0 into main 2026-06-19 06:23:27 +00:00
Owner
No description provided.
feat: add roadmap document outlining repository management features
All checks were successful
Test and Release / test (pull_request) Successful in 2m30s
Test and Release / lint (pull_request) Successful in 3m4s
e8924dc748
fuzzy scheduled this pull request to auto merge when all checks succeed 2026-06-19 04:24:50 +00:00
fuzzy canceled auto merging this pull request when all checks succeed 2026-06-19 04:24:57 +00:00
docs: update roadmap with issue links and descriptions
All checks were successful
Test and Release / lint (pull_request) Successful in 1m33s
Test and Release / test (pull_request) Successful in 2m1s
c2dcf79941
# Previous message:
Define repository directory structure specification

- Add docs/repository-layout.md with full directory hierarchy spec
- Initialize tpkgs/ submodule with example package structure
- Update ROADMAP.md to mark #0244, #0245, #0246, #0247 as done

Closes #0244
Closes #0245
Closes #0246
Closes #0247
# Previous message:
Implement repository walking and discovery

- WalkRepository() scans recursively for package.json files
- parsePackagePath() extracts category/name/version from path
- ValidateRepository() validates the directory structure pattern
- ValidatePath() validates individual package.json paths
- Full test coverage with table-driven tests

Closes #0248
Closes #0249
Closes #0250
Closes #0251
# Previous message:
Add package.json schema definition and validation

- Define PackageJSON struct with required and optional fields
- Required: name, version, category, source.url, source.checksum
- Optional: dependencies, provides, build, install, hooks, description, maintainer
- Validate() checks all required fields and hook types
- Full test coverage for validation

Closes #0252
Closes #0253
Closes #0254
Closes #0255
feat: implement source tarball handling with checksum verification
All checks were successful
Test and Release / test (pull_request) Successful in 1m36s
Test and Release / lint (pull_request) Successful in 1m42s
4a10059636
# Previous message:
Implement source tarball handling

- SourceFilename() extracts basename from source URL
- FetchSource() downloads or copies source, verifies checksum
- verifyChecksum() supports sha256 checksums with sha256: prefix
- Supports http://, https://, and file:// URL schemes
- Cached sources are reused without re-download
- Full test coverage for all paths

Closes #0256
Closes #0257
Closes #0258
Closes #0259
Closes #0260
# Previous message:
Implement patch application during build

- ListPatches() scans a directory and returns sorted patches
- Parse patch level from filename suffix (.p0.patch, .p1.patch)
- Default to -p1 if level not specified in filename
- ApplyPatches() runs patches sequentially with patch(1)
- Full test coverage including actual patch application

Closes #0261
Closes #0262
Closes #0263
Closes #0264
Closes #0265
feat: add patch application and dry-run support to build process
All checks were successful
Test and Release / test (pull_request) Successful in 1m39s
Test and Release / lint (pull_request) Successful in 1m42s
cd494983a4
# Previous message:
Add patch validation with builder integration

- Add PatchesDir and DryRun to builder.Config
- Apply patches before build steps, abort on failure
- Report which patch failed and why in error message
- --dry-run flag shows patches without applying
- --patches flag on tpkg build for patch directory

Closes #0266
Closes #0267
Closes #0268
Closes #0269
# Previous message:
Implement tpkg repo-index command

- GenerateIndex() walks repo, parses package.json, computes checksums
- repo-index command generates index.json at repository root
- Full test coverage including valid JSON output roundtrip

Closes #0274
Closes #0275
Closes #0276
Closes #0277
Closes #0278
Closes #0279
- implement GPG signing of index.json during repo-index command
- add -sign and -keyring flags to control signing behavior
- write signature to separate .sig file when signing is enabled
- update ROADMAP.md to mark signing features as complete

# Previous message:
Add index signing support to repo-index command

- --sign flag GPG signs the generated index via SignIndex()
- --keyring flag specifies custom GPG keyring
- Signature stored inline in index.json and optionally in .sig file
- repo update already verifies signatures via VerifyIndexSignature()

Closes #0280
Closes #0281
Closes #0282
Closes #0283
feat: implement incremental repository index generation
All checks were successful
Test and Release / test (pull_request) Successful in 1m32s
Test and Release / lint (pull_request) Successful in 1m38s
d86c4a1cc6
- add incremental flag to tpkg repo-index command
- implement GenerateIndexIncremental function that reuses unchanged entries
- preserve manual index annotations during incremental updates
- update ROADMAP.md to mark completed tasks
- add test case for incremental index preservation

# Previous message:
Support incremental index updates

- GenerateIndexIncremental() reuses unchanged entries from previous index
- --incremental flag on repo-index command
- Preserves entries from old index that no longer exist on disk
- Compares checksums to detect changed packages

Closes #0284
Closes #0285
Closes #0286
feat: implement repository management commands with alias and cache support
All checks were successful
Test and Release / test (pull_request) Successful in 1m30s
Test and Release / lint (pull_request) Successful in 1m36s
c96af6c604
This commit adds full implementation for repository management functionality including:
- repo-add command with priority and alias support
- repo-remove command with cache cleanup
- repo-list command with status and last update information
- repo-update command with merged index output
- Index merging functionality with conflict resolution
- Tests for index merging behavior

# Previous message:
Complete repository management commands

- Add --alias flag to repo-add for name aliases
- Add --cache flag to repo-remove to clean cached index files
- Add status/last-updated columns to repo-list
- Add MergeIndexes() and --merged-output flag to repo-update
- Tests for MergeIndexes with conflict resolution

Closes #0287
Closes #0288
Closes #0289
Closes #0290
Closes #0291
Closes #0292
Closes #0293
Closes #0294
Closes #0295
Closes #0296
Closes #0297
Closes #0298
Closes #0299
Closes #0300
Closes #0301
feat: implement package version constraints and search filters
All checks were successful
Test and Release / test (pull_request) Successful in 1m31s
Test and Release / lint (pull_request) Successful in 1m37s
f119b391cb
- add version constraint support in install command (@ operator)
- implement package search by category and description
- add package category and description fields to index and package structs
- update install command to handle parsed install arguments
- enhance search command with filtering options
- add version constraint matching logic for package resolution

# Previous message:
Complete package discovery and installation from repos

- Add Category and Description fields to index Package struct
- Enhance search with --category and --description flags
- Add category/package@version and @constraint syntax to install
- Add bestVersionFromIndices with version constraint matching
- Repository priority sorting during resolution

Closes #0302
Closes #0303
Closes #0304
Closes #0305
Closes #0306
Closes #0307
Closes #0308
Closes #0309
Closes #0310
Closes #0311
Closes #0312
Closes #0313
Closes #0314
Closes #0315
Closes #0316
Closes #0317
Closes #0318
Closes #0319
Closes #0320
Closes #0321
feat: implement build from repo context with index update support
All checks were successful
Test and Release / test (pull_request) Successful in 1m29s
Test and Release / lint (pull_request) Successful in 1m34s
afa2db2f75
# Previous message:
Extend tpkg build for repo context

- --repo flag builds from a repo version directory using package.json
- Fetches source tarball via FetchSource (downloads if missing)
- Applies patches from patches/ directory
- Runs build/install steps from package.json
- Creates .tpkg.gz in the version directory
- --update-index regenerates index.json after build
- --dry-run shows what would be built without executing

Closes #0322
Closes #0323
Closes #0324
Closes #0325
Closes #0326
Closes #0327
Closes #0328
Closes #0329
Closes #0330
Closes #0331
Closes #0332
Closes #0333
Closes #0334
Closes #0335
feat: implement source tarball caching and sharing functionality
All checks were successful
Test and Release / test (pull_request) Successful in 1m31s
Test and Release / lint (pull_request) Successful in 1m36s
8355ead8cd
# Previous message:
Implement global source tarball cache with management commands

- internal/cache package with Dir, Store, Fetch, List, Clean, Verify
- Cache in /var/cache/tpkg/sources/ (root) or ~/.cache/tpkg/sources/ (user)
- Keyed by first 16 hex chars of SHA-256 checksum
- Symlinks from version directories to cached files
- FetchSource now downloads to cache, creates symlink in version dir
- tpkg cache list, tpkg cache clean, tpkg cache verify commands
- Full test coverage

Closes #0336
Closes #0337
Closes #0338
Closes #0339
Closes #0340
Closes #0341
Closes #0342
Closes #0343
Closes #0344
Closes #0345
Closes #0346
feat: implement repo-mirror and repo-verify commands
All checks were successful
Test and Release / test (pull_request) Successful in 1m29s
Test and Release / lint (pull_request) Successful in 1m35s
3158284527
# Previous message:
Implement repository mirroring and verification

- tpkg repo-mirror command: mirrors a repo to local directory
  - Preserves category/package/version structure
  - Copies index.json and all .tpkg.gz files
  - --category, --package, --latest-only filter flags
- tpkg repo-verify command: verifies all packages in a repo
  - Checks file existence, checksums, and archive integrity
  - Reports missing, checksum mismatch, or corrupt packages

Closes #0347
Closes #0348
Closes #0349
Closes #0350
Closes #0351
Closes #0352
Closes #0353
Closes #0354
Closes #0355
Closes #0356
Closes #0357
Closes #0358
Closes #0359
feat: implement version management commands and update roadmap
All checks were successful
Test and Release / test (pull_request) Successful in 1m27s
Test and Release / lint (pull_request) Successful in 1m40s
871ce3d2f9
# Previous message:
Implement version management commands

- tpkg version: shows installed and available package versions
- tpkg update: refreshes repo index and updates packages to latest compatible
  - Respects held/pinned packages
- tpkg upgrade: updates all packages to latest versions (with compatibility warning)
- internal/version already handles parse, compare, constraints

Closes #0360
Closes #0361
Closes #0362
Closes #0363
Closes #0364
Closes #0365
Closes #0366
Closes #0367
Closes #0368
Closes #0369
Closes #0370
Closes #0371
Closes #0372
feat: implement dependency conflict detection and tpkg why command
All checks were successful
Test and Release / test (pull_request) Successful in 1m31s
Test and Release / lint (pull_request) Successful in 1m36s
a8da98815b
- Added conflict detection by parsing `conflicts` fields from package records
- Implemented `tpkg why` command to show why a package is installed
- Updated ROADMAP.md to mark Phase 10 tasks as completed
- Added `why` command to main usage output
- Added conflict checking during package installation
- Added `extractConflicts` helper function to parse conflict records

# Previous message:
Complete dependency resolution and graph features

- Add tpkg why command: shows which packages depend on a target
- Add conflict detection: extractConflicts() from PAX records
- Install aborts if a package conflicts with already-installed package
- Existing resolver already handles transitive deps, cycles, topology
- Existing virtual provides resolution via findVirtualProviders()

Closes #0373
Closes #0374
Closes #0375
Closes #0376
Closes #0377
Closes #0378
Closes #0379
Closes #0380
Closes #0381
Closes #0382
Closes #0383
Closes #0384
Closes #0385
Closes #0386
Closes #0387
feat: mark automatic verification features as completed in roadmap
All checks were successful
Test and Release / test (pull_request) Successful in 1m32s
Test and Release / lint (pull_request) Successful in 1m36s
250235f569
# Previous message:
Complete automatic verification features (Phase 11)

All verification features were already implemented:
- PAX header + PKG-INFO validation in archive.ExtractArchive
- Signature verification during install (verifyPackage)
- Round-trip test after pack (roundTripTest)
- SHA-256 checksums on all packaged files
- tpkg verify, verify-installed, verify-all commands
- tpkg verify --report for status summary
- Verification status stored in db (Verified, VerifiedAt)

Closes #0388
Closes #0389
Closes #0390
Closes #0391
Closes #0392
Closes #0393
Closes #0394
Closes #0395
Closes #0396
Closes #0397
Closes #0398
Closes #0399
Closes #0400
Closes #0401
Closes #0402
Closes #0403
Closes #0404
Closes #0405
fuzzy merged commit 250235f569 into main 2026-06-19 06:23:27 +00:00
fuzzy deleted branch tag/v2.1.0 2026-06-19 06:23:27 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
thwap/tpkg!243
No description provided.