docs(6208): ProjectView, KnowledgeView, SnippetListView and components.css comments drop citations and stories
CI & Build / Python lint (push) Successful in 3s
CI & Build / Plugin hooks (push) Successful in 13s
CI & Build / TypeScript typecheck (push) Successful in 53s
CI & Build / integration (push) Successful in 1m10s
CI & Build / Python tests (push) Successful in 1m54s
CI & Build / Build & push image (push) Successful in 52s
CI & Build / Python lint (push) Successful in 3s
CI & Build / Plugin hooks (push) Successful in 13s
CI & Build / TypeScript typecheck (push) Successful in 53s
CI & Build / integration (push) Successful in 1m10s
CI & Build / Python tests (push) Successful in 1m54s
CI & Build / Build & push image (push) Successful in 52s
components.css says why shared recipes live there without the five-copy .btn-primary count; KnowledgeView's editor-routing and chip comments state the present reason instead of the bug that once routed snippets wrong. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -48,7 +48,7 @@ interface KnowledgeItem {
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
/** Surfaced-vs-opened counts, zero-filled by the route for EVERY row, so
|
||||
* "never surfaced" is a value here rather than a missing field (#4230).
|
||||
* "never surfaced" is a value here rather than a missing field.
|
||||
* `UsageBadge` renders nothing at all below one surfacing. */
|
||||
usage?: RecordUsage | null;
|
||||
// Set only when another user owns this record — their suggestion, not one of
|
||||
@@ -69,10 +69,9 @@ interface KnowledgeItem {
|
||||
// a task KIND (`task` for any, else issue / spike) — because that is what this
|
||||
// feed actually holds.
|
||||
//
|
||||
// `plan` is still a valid facet at the API, for the 90 legacy plan-tasks, but
|
||||
// it has no chip: retired in 0066, it kept a chip of its own for longer than
|
||||
// `issue` — 17% of every task here — went without one (#3128). Those rows are
|
||||
// still reachable under Tasks, wearing a Plan badge.
|
||||
// `plan` is still a valid facet at the API, for legacy plan-tasks, but it has
|
||||
// no chip: plans are milestones now. Those rows are still reachable under
|
||||
// Tasks, wearing a Plan badge.
|
||||
type Facet = "" | "note" | "task" | "issue" | "spike" | "snippet" | "process" | "lesson";
|
||||
|
||||
// The facets that select TASKS. Kinds are subsets of `task`, so any of them
|
||||
@@ -93,7 +92,7 @@ const FACET_CHIPS: [Exclude<Facet, "">, string][] = [
|
||||
// The sweep is cross-cutting — a note that has gone false does not care which
|
||||
// facet it sits under — so it REPLACES the browse list rather than filtering
|
||||
// it. Filtering would mean the answer depended on which chip was active, which
|
||||
// is the under-reporting the sweep exists to prevent (milestone 317 step 4).
|
||||
// is the under-reporting the sweep exists to prevent.
|
||||
const sweepActive = ref(false);
|
||||
|
||||
// ─── Filter state ─────────────────────────────────────────────────────────────
|
||||
@@ -201,8 +200,8 @@ const items = ref<KnowledgeItem[]>([]);
|
||||
|
||||
// True only when a search actually returned matched passages — not merely when
|
||||
// the box has text in it. A keyword-only result set, or an embedder that is
|
||||
// down, carries `body_opening` rows, and claiming otherwise would be the same
|
||||
// species of lie this whole change is about (#4243).
|
||||
// down, carries `body_opening` rows, and labelling those as matched passages
|
||||
// would misstate why the row is there.
|
||||
const showsMatchedPassages = computed(
|
||||
() =>
|
||||
searchQuery.value.trim().length > 0 &&
|
||||
@@ -351,12 +350,8 @@ function isOverdue(item: KnowledgeItem): boolean {
|
||||
return new Date(item.due_date) < new Date(new Date().toDateString());
|
||||
}
|
||||
|
||||
// Each record kind opens in ITS OWN editor. A snippet used to fall through to
|
||||
// /notes/:id, whose save is a plain PATCH of the body — which left the snippet's
|
||||
// derived `data` mirror describing the previous version (#3128). The service now
|
||||
// recomposes the mirror either way, so this is no longer the guard; it is simply
|
||||
// that the note editor cannot edit a snippet's signature, language or locations,
|
||||
// and offering it as the way in was always wrong. Processes stay here on
|
||||
// Each record kind opens in ITS OWN editor: the note editor cannot edit a
|
||||
// snippet's signature, language or locations, so it is not the way in. Processes stay here on
|
||||
// purpose: they have no editor of their own and the note editor knows the type.
|
||||
function openItem(item: KnowledgeItem) {
|
||||
if (item.note_type === 'task') {
|
||||
@@ -666,7 +661,7 @@ onUnmounted(() => {
|
||||
class="shared-tag"
|
||||
:title="`Shared by ${item.owner ?? 'another user'} — their record, not yours`"
|
||||
>by {{ item.owner ?? "another user" }}</span>
|
||||
<!-- Surfaced-vs-opened (#4230). This is the only list in the UI
|
||||
<!-- Surfaced-vs-opened. This is the only list in the UI
|
||||
that browses notes and lessons, so it is the only place
|
||||
those two kinds can show the counter at all. The advice is
|
||||
looked up per row because this feed is mixed — the remedy
|
||||
@@ -1015,9 +1010,7 @@ onUnmounted(() => {
|
||||
.badge--note { background: color-mix(in srgb, var(--fs-accent) 15%, transparent); color: #7A6DA8; }
|
||||
.badge--task { background: rgba(212,160,23,0.15); color: #fbbf24; }
|
||||
.badge--plan { background: rgba(99,102,241,0.18); color: #818cf8; }
|
||||
/* Snippet and process are NEUTRAL on purpose. Both were unstyled — and the
|
||||
snippet had no label either, so all 90 of them rendered an empty chip in
|
||||
this feed (#3128). Giving them hues would put a third and fourth colour
|
||||
/* Snippet and process are NEUTRAL on purpose. Giving them hues would put a third and fourth colour
|
||||
beside KindBadge's warm/cool pair on the same card; a record type that
|
||||
isn't an alarm reads better as plain. Standard body pair, so the contrast
|
||||
is the one the palette already guarantees. */
|
||||
@@ -1158,11 +1151,9 @@ onUnmounted(() => {
|
||||
border-bottom: 1px solid var(--fs-border-color);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
/* RESTORED (#2444). The panel is a flex COLUMN and its header is
|
||||
`flex-shrink: 0`, so this is the item that takes the remaining height — and
|
||||
without it the `height: 100%` below resolves against `auto` and does
|
||||
nothing, which made the comment underneath a spec for a rule that could not
|
||||
work. `min-height: 0` is the companion that lets a flex item shrink under
|
||||
/* The panel is a flex COLUMN and its header is `flex-shrink: 0`, so this is
|
||||
the item that takes the remaining height — without it the `height: 100%`
|
||||
below resolves against `auto` and does nothing. `min-height: 0` is the companion that lets a flex item shrink under
|
||||
its content instead of overflowing the panel. */
|
||||
.graph-embed {
|
||||
flex: 1;
|
||||
|
||||
Reference in New Issue
Block a user