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": [ "decisions": [
{ {
"id": "D-1", "id": "D-1",
+3 -3
View File
@@ -39,10 +39,10 @@ make push-check # pre-push gate: decisions + core + fast tests
## Status ## 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 ## 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'; import 'claude_pane.dart';
/// Hosts the primary Claude pane plus N user-spawned secondary /// 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 /// (drag-reorder, close ×, + button) and [IndexedStack]-mode
/// keep-alive so switching tabs doesn't tear down the underlying /// keep-alive so switching tabs doesn't tear down the underlying
/// PTY-backed terminal. /// PTY-backed terminal.
+3 -3
View File
@@ -1,8 +1,8 @@
/// Manages the backend isolate lifecycle. /// Manages the backend isolate lifecycle.
/// ///
/// Two-phase boot: /// Two-phase boot:
/// 1. [spawn] — starts the isolate, resolves toolchain (binary checks only). /// 1. [Backend.spawn] — starts the isolate, resolves toolchain (binary checks only).
/// 2. [openWorkspace] — initializes services for a specific project root. /// 2. [Backend.openProject] — initializes services for a specific project root.
library; library;
import 'dart:async'; import 'dart:async';
@@ -34,7 +34,7 @@ class Backend {
int _validateId = 0; int _validateId = 0;
/// Spawn the backend isolate. Returns when the toolchain is resolved. /// 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({ static Future<Backend> spawn({
required IsolateClient Function(SendPort backendPort) clientFactory, required IsolateClient Function(SendPort backendPort) clientFactory,
String? hintRoot, String? hintRoot,
+2 -1
View File
@@ -136,7 +136,8 @@ class I18n extends ChangeNotifier {
} }
/// [string] + naive `replaceAll` interpolation per replacer. /// [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 interpolated(
String key, { String key, {
required String namespace, 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 /// The token surface grows as features need more of it. Every token
/// declared here must have a default resolution in /// declared here must have a default resolution in
/// [DefaultSurfaceMap] so legacy palette-only themes produce a complete /// `_defaultSurfaceMap` (resolver.dart) so legacy palette-only themes
/// SurfaceTokens without declaring the full surface. /// produce a complete SurfaceTokens without declaring the full surface.
@immutable @immutable
class SurfaceTokens { class SurfaceTokens {
const SurfaceTokens({ const SurfaceTokens({
+3 -3
View File
@@ -1,8 +1,8 @@
/// Centralized binary resolution for external tools. /// Centralized binary resolution for external tools.
/// ///
/// Resolution runs in a background isolate via [resolvePaths] to avoid /// Resolution runs in a background isolate via [Toolchain.resolvePaths]
/// blocking the merged UI/platform thread on macOS. The result is /// to avoid blocking the merged UI/platform thread on macOS. The result
/// applied on the main thread via [applyResolved]. /// is applied on the main thread via [Toolchain.applyResolved].
library; library;
import 'dart:async'; import 'dart:async';
+2 -2
View File
@@ -2,8 +2,8 @@ import 'package:clide/kernel/src/theme/controller.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
/// Stateless painter producing a single-color icon. Every icon in /// Stateless painter producing a single-color icon. Every icon in
/// [icons/] subclasses this; widgets wrap with [ClideIcon] for size + /// `widgets/src/icons/` subclasses this; widgets wrap with [ClideIcon]
/// color-from-theme. /// for size + color-from-theme.
abstract class ClideIconPainter { abstract class ClideIconPainter {
const ClideIconPainter(); const ClideIconPainter();