clear dart doc validate-links warnings

Eight unresolved doc references and broken README-rewritten links
that surfaced under `dart doc --validate-links`:

- Library-scope refs `[spawn]`, `[openProject]` qualified to
  `[Backend.spawn]` / `[Backend.openProject]`; same treatment for
  `[resolvePaths]` / `[applyResolved]` on Toolchain.
- `[D-41]` was a decision ID, not a Dart symbol — drop the brackets.
- `[from]` from I18n.interpolated qualified to `[I18nReplacer.from]`.
- `[DefaultSurfaceMap]` was a stale name (private `_defaultSurfaceMap`
  in resolver.dart); switch to backticked path reference since
  dartdoc can't link private members.
- `[icons/]` was a directory, not a symbol; backticked path.
- README links to `legacy/`, `docs/initial-plan.md`, `decisions/`,
  `LICENSE` rewritten as absolute github.com/postmeridiem/clide URLs
  so dartdoc stops re-rooting them into the doc tree.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-06 17:58:18 +02:00
co-authored by Claude
parent eda5d04710
commit 5ee759d0fd
8 changed files with 17 additions and 16 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
{
"exported_at": "2026-05-06T15:58:06Z",
"exported_at": "2026-05-06T15:58:18Z",
"decisions": [
{
"id": "D-1",
+3 -3
View File
@@ -39,10 +39,10 @@ make push-check # pre-push gate: decisions + core + fast tests
## Status
Pre-v2.0 (`2.0.0-dev`). Interaction model and panel system landed. The Python Textual v1.2.0 predecessor is archived under [`legacy/`](legacy/).
Pre-v2.0 (`2.0.0-dev`). Interaction model and panel system landed. The Python Textual v1.2.0 predecessor is archived under [`legacy/`](https://github.com/postmeridiem/clide/tree/main/legacy).
Design doc: [`docs/initial-plan.md`](docs/initial-plan.md). Architectural decisions: [`decisions/`](decisions/).
Design doc: [`docs/initial-plan.md`](https://github.com/postmeridiem/clide/blob/main/docs/initial-plan.md). Architectural decisions: [`decisions/`](https://github.com/postmeridiem/clide/tree/main/decisions).
## License
MIT. See [`LICENSE`](LICENSE).
MIT. See [`LICENSE`](https://github.com/postmeridiem/clide/blob/main/LICENSE).
@@ -4,7 +4,7 @@ import 'package:flutter/widgets.dart';
import 'claude_pane.dart';
/// Hosts the primary Claude pane plus N user-spawned secondary
/// sessions per [D-41]. Uses [MultitabPane] for the tab strip
/// sessions per D-41. Uses [MultitabPane] for the tab strip
/// (drag-reorder, close ×, + button) and [IndexedStack]-mode
/// keep-alive so switching tabs doesn't tear down the underlying
/// PTY-backed terminal.
+3 -3
View File
@@ -1,8 +1,8 @@
/// Manages the backend isolate lifecycle.
///
/// Two-phase boot:
/// 1. [spawn] — starts the isolate, resolves toolchain (binary checks only).
/// 2. [openWorkspace] — initializes services for a specific project root.
/// 1. [Backend.spawn] — starts the isolate, resolves toolchain (binary checks only).
/// 2. [Backend.openProject] — initializes services for a specific project root.
library;
import 'dart:async';
@@ -34,7 +34,7 @@ class Backend {
int _validateId = 0;
/// Spawn the backend isolate. Returns when the toolchain is resolved.
/// No services are active yet — call [openWorkspace] to activate.
/// No services are active yet — call [openProject] to activate.
static Future<Backend> spawn({
required IsolateClient Function(SendPort backendPort) clientFactory,
String? hintRoot,
+2 -1
View File
@@ -136,7 +136,8 @@ class I18n extends ChangeNotifier {
}
/// [string] + naive `replaceAll` interpolation per replacer.
/// Matches fframe: replacers whose [from] isn't present are silent no-ops.
/// Matches fframe: replacers whose [I18nReplacer.from] isn't present
/// are silent no-ops.
String interpolated(
String key, {
required String namespace,
+2 -2
View File
@@ -6,8 +6,8 @@ import 'package:flutter/foundation.dart';
///
/// The token surface grows as features need more of it. Every token
/// declared here must have a default resolution in
/// [DefaultSurfaceMap] so legacy palette-only themes produce a complete
/// SurfaceTokens without declaring the full surface.
/// `_defaultSurfaceMap` (resolver.dart) so legacy palette-only themes
/// produce a complete SurfaceTokens without declaring the full surface.
@immutable
class SurfaceTokens {
const SurfaceTokens({
+3 -3
View File
@@ -1,8 +1,8 @@
/// Centralized binary resolution for external tools.
///
/// Resolution runs in a background isolate via [resolvePaths] to avoid
/// blocking the merged UI/platform thread on macOS. The result is
/// applied on the main thread via [applyResolved].
/// Resolution runs in a background isolate via [Toolchain.resolvePaths]
/// to avoid blocking the merged UI/platform thread on macOS. The result
/// is applied on the main thread via [Toolchain.applyResolved].
library;
import 'dart:async';
+2 -2
View File
@@ -2,8 +2,8 @@ import 'package:clide/kernel/src/theme/controller.dart';
import 'package:flutter/widgets.dart';
/// Stateless painter producing a single-color icon. Every icon in
/// [icons/] subclasses this; widgets wrap with [ClideIcon] for size +
/// color-from-theme.
/// `widgets/src/icons/` subclasses this; widgets wrap with [ClideIcon]
/// for size + color-from-theme.
abstract class ClideIconPainter {
const ClideIconPainter();