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>
134 lines
4.7 KiB
YAML
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).
|