Skip to content

Wave/1 modernization and rebrand#1

Merged
YoungMayor merged 12 commits intomainfrom
wave/1-modernization-and-rebrand
Apr 1, 2026
Merged

Wave/1 modernization and rebrand#1
YoungMayor merged 12 commits intomainfrom
wave/1-modernization-and-rebrand

Conversation

@YoungMayor
Copy link
Copy Markdown
Owner

This pull request modernizes and rebrands the project, transitioning it from yalc to @mayrlabs/devlink. It introduces updated build tooling, new CI/CD workflows, and documentation changes to reflect the new project identity and improved development practices.

Project rebranding and documentation:

  • Updated all references from yalc to devlink or @mayrlabs/devlink in README.md and other documentation files, including usage instructions, badges, and lock file names. [1] [2]
  • Changed the project name in the changelog, added a new section for the initial fork and modernization, and described the major updates.
  • Updated copyright in LICENCE.md to include MayR Labs.

Build tooling and configuration:

  • Added a .changeset folder with README.md and config.json to support release management using Changesets. [1] [2]
  • Added a .husky/pre-commit hook to run lint-staged for improved code quality.

Continuous Integration and Release Automation:

  • Added GitHub Actions workflows for CI (.github/workflows/ci.yml) and automated releases (.github/workflows/release.yml), replacing the old Travis CI setup. [1] [2] [3]

Development environment cleanup:

  • Removed legacy VSCode settings and tasks files (.vscode/settings.json, .vscode/tasks.json). [1] [2]

Package publishing adjustments:

  • Updated .npmignore and .yalcignore to better control which files are included or excluded during publishing, notably ignoring markdown files in .npmignore and removing markdown from .yalcignore.

These changes collectively modernize the project infrastructure, streamline development workflows, and clarify the new project identity.

Rename and rebrand project from 'yalc' to '@mayrlabs/devlink' (README, CHANGELOG, LICENCE, config rename .yalcrc -> .devlinkrc) and update source to reflect the new name (including renaming src/yalc.ts -> src/devlink.ts). Modernize build/test/lint stack and repo infra: switch package manager/tooling and scripts (package.json updated), add Biome config and tsdown, add GitHub Actions CI, remove legacy Travis/VScode configs, and update .gitignore/.npmignore. Miscellaneous TypeScript source updates and housekeeping to align with the new project structure and tooling.
Introduce Changesets support and a GitHub Actions release workflow to manage versioning and publishing. Add husky pre-commit hook and lint-staged config, update .gitignore to ignore .env, and add docs for commands and testing. Migrate package outputs/types to ESM (.mjs / .d.mts), adjust package.json scripts (prepare: husky) and bump tooling (Biome config/schema updates and stricter lint rules). Miscellaneous source and test updates to align with these tooling changes.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request modernizes and rebrands the project from yalc to @mayrlabs/devlink, updating the CLI entrypoint, build/lint tooling, and automation to match the new package identity.

Changes:

  • Rebrand core runtime/CLI from yalc to devlink (paths, lockfile/signature naming, CLI entrypoint).
  • Modernize TypeScript + ESM build pipeline (NodeNext, tsdown, Biome) and remove legacy tooling (TSLint/Travis/VSCode configs).
  • Add GitHub Actions CI + Changesets-based release automation and update docs/tests accordingly.

Reviewed changes

Copilot reviewed 37 out of 43 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
tslint.json Removes legacy TSLint configuration.
tsdown.config.ts Adds tsdown build configuration (ESM + dts output).
tsconfig.json Updates TS compiler settings for modern NodeNext/ESNext output.
test/index.ts Updates tests for ESM imports + rebrand (devlink.* naming and paths).
test/fixture/dep-package/package.json Updates fixture package files list for new .mayrlabs/devlink path.
test/fixture/dep-package/.mayrlabs/devlink/devlink.txt Adds new fixture content under rebranded folder layout.
src/yalc.ts Removes old yalc CLI entrypoint.
src/devlink.ts Adds new devlink CLI entrypoint using ESM + yargs.
src/index.ts Renames exported constants/globals and updates store/signature/ignore handling for Devlink.
src/add.ts Updates add/link logic for new folder/lockfile names and Node built-in fs APIs.
src/update.ts Modernizes update logic + ESM import paths.
src/remove.ts Updates remove logic for Devlink paths + Node built-in fs APIs.
src/publish.ts Updates publish flow and lifecycle scripts to Devlink naming and ESM imports.
src/copy.ts Updates package copying/signature behavior + workspace resolution under ESM/Node fs APIs.
src/sync-dir.ts Reworks directory sync implementation using fs/promises and ESM imports.
src/lockfile.ts Updates lockfile IO to Node fs + new names and safer removals.
src/installations.ts Updates installations tracking IO to Node fs + ESM imports.
src/pkg.ts Updates manifest/types and dependency sorting/write behavior.
src/pm.ts Updates package-manager detection/commands to Node built-in fs + ESM imports.
src/console.ts Modernizes console overloading implementation and typings.
src/check.ts Updates check command for Devlink paths and Node built-ins.
README.md Rebrands documentation and usage examples for Devlink.
CHANGELOG.md Updates changelog header and adds fork/modernization entry.
LICENCE.md Adds MayR Labs copyright line.
docs/commands.md Adds Devlink CLI command reference documentation.
docs/about-test.md Adds documentation describing the Mocha integration test setup.
biome.json Adds Biome formatter/linter configuration.
package.json Renames package to @mayrlabs/devlink, switches scripts/tooling, updates bin/main/types.
pnpm-lock.yaml Updates lockfile for new dependencies/tooling.
.npmignore Changes npm publish ignore rules.
.gitignore Updates ignores for dist/, .mayrlabs/devlink, and devlink.lock.
.devlinkrc Adds repo rc config file (defaults).
.husky/pre-commit Adds pre-commit hook intended to run lint-staged.
.github/workflows/ci.yml Adds GitHub Actions CI workflow (lint + build).
.github/workflows/release.yml Adds Changesets-based release workflow.
.changeset/README.md Adds Changesets documentation.
.changeset/config.json Adds Changesets config.
.yalcignore Removes legacy ignore file.
.travis.yml Removes Travis CI configuration.
.vscode/settings.json Removes legacy VSCode settings.
.vscode/tasks.json Removes legacy VSCode tasks.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/remove.ts
Comment thread .husky/pre-commit Outdated
Comment thread .github/workflows/release.yml
Comment thread .github/workflows/ci.yml Outdated
Comment thread .npmignore Outdated
Comment thread src/index.ts Outdated
Comment thread README.md
Comment thread README.md
Comment thread src/check.ts
Comment thread src/copy.ts Outdated
Switch CI formatting to use `pnpm exec biome format .`, bump release workflow to Node 22 and change the release action to run `pnpm run release`. Add a `release` script to package.json (uses changesets) and tidy up lint-staged and prepare script. Expand .npmignore to exclude docs, source, tests, coverage, editor configs and temp files so only build artifacts are published. Apply stylistic and minor robustness changes to src/copy.ts (consistent quoting/formatting, improved error throw, small refactors) without changing core behavior.
Rename package references to the @mayrlabs scope in README (install instructions and badge) and standardize the devlink ignore path to .mayrlabs/.devlinkignore across docs and code. Update src constant (ignoreFileName) and README examples to the nested .mayrlabs path. Also adjust package.json test script to run TypeScript tests via mocha with ts-node ESM loader (mocha --extension ts --node-option loader=ts-node/esm test/index.ts). These changes align project layout with the mayrlabs namespace and enable running TS tests directly.
Escape dots in values.devlinkPackagesFolder and tighten matching in regexes. Updated check.ts and remove.ts to escape the folder name before constructing the RegExp so folder names containing '.' are matched literally; the patterns now allow an optional './' prefix and remove.ts uses anchors to avoid partial matches.
Add a new src/constants.ts to centralize config values and validFlags. Refactor src/index.ts to export values from the new module. Update src/rc.ts to use values.rcFileName and import validFlags (remove duplicated flag list) and tighten type checks. Fix installation deduplication in src/installations.ts by using find(...) instead of filter(...)[0]. Rename .devlinkrc to .mayrlabs/.devlinkrc and update README references. Also add biome.json setting to ignore the dist folder.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 38 out of 44 changed files in this pull request and generated 12 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/sync-dir.ts
Comment thread src/rc.ts Outdated
Comment thread package.json
Comment thread package.json
Comment thread .github/workflows/ci.yml Outdated
Comment thread src/index.ts Outdated
Comment thread test/index.ts
Comment thread src/pkg.ts Outdated
Comment thread src/devlink.ts Outdated
Comment thread src/copy.ts
Uncomment CI test step to run "pnpm run test" in GitHub Actions. Fix the mocha test invocation in package.json to pass the loader flag correctly (add the missing `--loader` argument), and normalize lint-staged to a multi-line array. Code changes are mostly stylistic/cleanup: standardize string quotes, remove an unused import (join) in src/rc.ts, adjust glob patterns and Node version parsing in src/sync-dir.ts, replace '' with "" for empty-string args, and remove commented debug logs. No major behavioral changes aside from enabling tests and the mocha flag fix.
Pre-create destination directories before copying files to avoid ENOENT for nested files (adds mkdir with { recursive: true } for entries flagged as dirs). Also add test/tmp to biome.json ignore list and fix the package.json test script to use the correct `--node-option loader=ts-node/esm` syntax.
Normalize code style (single -> double quotes, minor wording fixes), make PackageManifest.devlink optional, and ensure destination directories exist before copying by creating parent dirs (fsPromises.mkdir) in copy logic. Also includes small fixes to package name parsing defaults, signature/ignore file handling, workspace resolution tweaks, and other minor formatting/whitespace cleanups.
Await yargs and convert CLI command handlers to async/await in src/devlink.ts, ensuring publishPackage, addPackages, updatePackages and removePackages are awaited so async workflows complete before exit (prevents race conditions). Also correct minor typos in README.md ("Pnmp" -> "Pnpm" and "ads" -> "adds").
@YoungMayor YoungMayor merged commit 231816e into main Apr 1, 2026
2 checks passed
@YoungMayor YoungMayor deleted the wave/1-modernization-and-rebrand branch April 3, 2026 00:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants