Files
clide/app/assets/licenses.yaml
T
jpmschweitzerandClaude edd8a20e0d add Dart PTY wrapper and test-core harness
PtySession wraps the ptyc helper: socketpair + Process.start + recvmsg
with SCM_RIGHTS for master-fd transfer, a background isolate that
loops on blocking read() and posts byte chunks, plus write/resize/
kill/close. close() SIGTERMs the child so the PTY's EOF wakes the
reader naturally; SIGKILL + fd close + isolate kill cover the edge
where the shell ignores SIGTERM — avoids the known Linux quirk where
closing an fd doesn't unblock an in-flight read() on it.

Env defaults stamp TERM=xterm-256color, COLORTERM=truecolor,
CLICOLOR_FORCE=1 so shells + tmux + Claude emit 24-bit sequences
that xterm.dart can render. User env (HOME / USER / SHELL) still
inherits via mergePtyEnv().

ffi: 2.1.3 added as a runtime dep — the FFI bindings for socketpair,
recvmsg, read/write, and ioctl(TIOCSWINSZ) need an allocator we're
not writing by hand. Justified in pubspec + listed in licenses.yaml
per D-042.

make test-core (ci/test_core.sh) runs the Flutter-free core tests
under a 120s hard timeout with setsid + process-group kill, wired
ahead of the fast app tests in push-check so a hung PTY test can't
wedge a pre-push. Current core suite: 24 tests in ~1s.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-22 09:01:01 +02:00

134 lines
4.7 KiB
YAML

# clide — licensing manifest.
#
# Three sections:
# - `self:` — clide's own license (MIT). Rendered first in the About
# screen so the user knows what they're running before they see
# the list of things it depends on.
# - `dependencies:` — third-party artefacts that SHIP in the clide
# binary: fonts, runtime Dart packages, native supporter tools,
# bundled data. The About screen renders these verbatim.
# - `dev_dependencies:` — build-time-only tooling: test runners,
# mocks, lints, golden-test harness. These never enter the shipped
# binary, so the About screen does not render them, but they're
# tracked here for audit completeness alongside the real list.
#
# Adding a new runtime dependency is a two-step commit:
# 1. Add the dependency itself (font file, `pubspec.yaml` entry, etc.)
# 2. Add the entry under `dependencies:` below in the same commit, so
# the About screen stays accurate and the prefer-zero-deps
# guardrail is enforced by the obvious visible consequence: an
# extra row in the list.
#
# Adding a new dev-only dependency is the same two-step commit, just
# under `dev_dependencies:` instead. The guardrail still applies —
# dev deps are supply-chain risk too — but they don't pollute the
# user-facing About screen.
#
# See CLAUDE.md "Dependencies & supply chain" for the full rule, and
# `decisions/tooling.md` for the D-record that pins it.
schema_version: 1
# clide itself. Listed first so the About screen can render "You're
# looking at clide vX, MIT-licensed" at the top of the panel before
# the bundled-dependency list underneath. The root LICENSE is the
# authoritative copy; `app/assets/LICENSE` is a mirror bundled so the
# About screen can read it at runtime.
self:
name: clide
version: "2.0.0-dev"
homepage: https://git.schweitz.net/jpmschweitzer/clide
license: MIT
license_file: assets/LICENSE
copyright: "© 2026 Jeroen Schweitzer"
# Runtime dependencies — ship in the clide binary.
dependencies:
- name: JetBrains Mono
kind: font
version: "2.304"
homepage: https://github.com/JetBrains/JetBrainsMono
license: OFL-1.1
license_file: assets/fonts/jetbrains_mono/OFL.txt
purpose: >-
Monospace face for terminal panes, diff views, code editors, and
any other monospace surface.
weights_bundled: [Regular, Italic, Bold, BoldItalic]
- name: Josefin Sans
kind: font
version: "variable"
homepage: https://fonts.google.com/specimen/Josefin+Sans
license: OFL-1.1
license_file: assets/fonts/josefin_sans/OFL.txt
purpose: >-
Application UI face. Default weight Light (300); full 100-700
range available via the variable-font weight axis.
weights_bundled: [VariableFont, Italic-VariableFont]
- name: yaml
kind: dart-package
version: "3.1.3"
homepage: https://pub.dev/packages/yaml
license: MIT
purpose: >-
YAML parser for theme files and extension manifests. Justified
exception to prefer-zero-deps; Dart-team maintained.
- name: ffi
kind: dart-package
version: "2.1.3"
homepage: https://pub.dev/packages/ffi
license: BSD-3-Clause
purpose: >-
Allocator (`calloc`) and type helpers on top of dart:ffi. Used by
the core PTY wrapper for libc bindings (socketpair, recvmsg with
SCM_RIGHTS, ioctl). Dart-team maintained; zero transitive deps.
# Build-time-only dependencies — test runners, mocks, lints. Tracked
# here for audit completeness; NOT rendered in the About screen.
dev_dependencies:
- name: mocktail
kind: dart-package
version: "1.0.4"
homepage: https://pub.dev/packages/mocktail
license: MIT
purpose: >-
Mocks at IO / IPC boundaries. ChangeNotifier facades use
hand-rolled fakes instead of mocks (D-025).
- name: alchemist
kind: dart-package
version: "0.12.1"
homepage: https://pub.dev/packages/alchemist
license: MIT
purpose: >-
Golden-test framework; Ahem-font rendering for cross-platform
pixel stability on widget primitives (D-024).
- name: flutter_lints
kind: dart-package
version: "6.0.0"
homepage: https://pub.dev/packages/flutter_lints
license: BSD-3-Clause
purpose: Flutter-team-recommended analyzer lint set (app/).
- name: lints
kind: dart-package
version: "5.0.0"
homepage: https://pub.dev/packages/lints
license: BSD-3-Clause
purpose: >-
Dart-team-recommended analyzer lint set for the Flutter-free
core package at the repo root.
- name: test
kind: dart-package
version: "1.25.8"
homepage: https://pub.dev/packages/test
license: BSD-3-Clause
purpose: >-
Dart test runner for the core package (Flutter-free; the app
uses flutter_test from the Flutter SDK for widget + golden
coverage).