secondbrain-py 0.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- brain/__init__.py +0 -0
- brain/__main__.py +18 -0
- brain/_capture_command.py +445 -0
- brain/_compose.py +52 -0
- brain/activity.py +206 -0
- brain/ask.py +631 -0
- brain/audio.py +591 -0
- brain/backfill/__init__.py +12 -0
- brain/backfill/search_extras.py +141 -0
- brain/backfill/source_rows.py +101 -0
- brain/bin/__init__.py +1 -0
- brain/bin/_launcher.py +107 -0
- brain/bin/down.py +8 -0
- brain/bin/launchd.py +268 -0
- brain/bin/monitor.py +570 -0
- brain/bin/rebuild.py +8 -0
- brain/bin/status.py +8 -0
- brain/bin/up.py +8 -0
- brain/brief.py +272 -0
- brain/capture.py +49 -0
- brain/chat.py +293 -0
- brain/cli.py +9760 -0
- brain/cli_claude.py +81 -0
- brain/cli_connect.py +285 -0
- brain/cli_demo.py +266 -0
- brain/config.py +1949 -0
- brain/connect.py +925 -0
- brain/db.py +540 -0
- brain/demo/__init__.py +452 -0
- brain/demo/corpus/manifest.json +403 -0
- brain/demo/embedder.py +74 -0
- brain/durations.py +84 -0
- brain/edit_session.py +156 -0
- brain/editor.py +67 -0
- brain/elicit/__init__.py +16 -0
- brain/elicit/detectors.py +250 -0
- brain/elicit/drafter.py +70 -0
- brain/elicit/queue.py +220 -0
- brain/elicit/schema.py +48 -0
- brain/elicit/session.py +445 -0
- brain/embedding_targets.py +54 -0
- brain/embeddings.py +424 -0
- brain/enrichment.py +808 -0
- brain/errors.py +357 -0
- brain/eval/__init__.py +129 -0
- brain/eval/answer_eval.py +281 -0
- brain/eval/baseline.py +265 -0
- brain/eval/concept_extraction.py +378 -0
- brain/eval/corpus.py +152 -0
- brain/eval/errors.py +19 -0
- brain/eval/graph_baseline.py +226 -0
- brain/eval/graph_retrieval.py +202 -0
- brain/eval/graph_runner.py +319 -0
- brain/eval/metrics.py +101 -0
- brain/eval/runner.py +223 -0
- brain/format.py +783 -0
- brain/gaps.py +390 -0
- brain/graph_rag/__init__.py +94 -0
- brain/graph_rag/_retrieval_common.py +113 -0
- brain/graph_rag/aggregates.py +303 -0
- brain/graph_rag/aliases/__init__.py +583 -0
- brain/graph_rag/backends/__init__.py +10 -0
- brain/graph_rag/backends/_age_helpers.py +473 -0
- brain/graph_rag/backends/age.py +782 -0
- brain/graph_rag/backends/base.py +272 -0
- brain/graph_rag/build.py +344 -0
- brain/graph_rag/communities.py +644 -0
- brain/graph_rag/communities_summary.py +437 -0
- brain/graph_rag/concepts.py +202 -0
- brain/graph_rag/cooccur.py +193 -0
- brain/graph_rag/cross_type.py +312 -0
- brain/graph_rag/extract.py +885 -0
- brain/graph_rag/fuse.py +371 -0
- brain/graph_rag/global_.py +412 -0
- brain/graph_rag/grouping.py +372 -0
- brain/graph_rag/person_resolver.py +167 -0
- brain/graph_rag/reconcile.py +792 -0
- brain/graph_rag/relational.py +353 -0
- brain/graph_rag/retrieve.py +526 -0
- brain/graph_rag/router.py +288 -0
- brain/graph_rag/schema.py +320 -0
- brain/graph_rag/sync.py +237 -0
- brain/graph_rag/tenancy.py +43 -0
- brain/graph_rag/themes.py +501 -0
- brain/graph_rag/weighting.py +202 -0
- brain/ingest/__init__.py +1926 -0
- brain/ingest/chunker.py +249 -0
- brain/ingest/docx.py +40 -0
- brain/ingest/gmail.py +621 -0
- brain/ingest/markdown.py +37 -0
- brain/ingest/pdf.py +61 -0
- brain/ingest/stdin.py +22 -0
- brain/ingest/sub_tokens.py +91 -0
- brain/ingest/text.py +16 -0
- brain/interactions.py +205 -0
- brain/maintenance.py +355 -0
- brain/mcp_server.py +3405 -0
- brain/migrations/001_init.sql +43 -0
- brain/migrations/002_qwen3_embedding.sql +17 -0
- brain/migrations/003_vault_model.sql +41 -0
- brain/migrations/004_relax_content_hash_uniqueness.sql +18 -0
- brain/migrations/005_derived_links.sql +67 -0
- brain/migrations/006_dedup_file_by_source_path.sql +25 -0
- brain/migrations/007_email_thread_and_draft.sql +15 -0
- brain/migrations/008_gmail_thread_unique.sql +11 -0
- brain/migrations/009_chunks_weighted_tsv.sql +28 -0
- brain/migrations/010_interactions.sql +30 -0
- brain/migrations/011_documents_summary.sql +23 -0
- brain/migrations/012_graphrag.sql +171 -0
- brain/migrations/013_graphrag_communities.sql +125 -0
- brain/migrations/014_graphrag_community_summary_hash.sql +33 -0
- brain/migrations/015_interactions_graph_targets.sql +89 -0
- brain/migrations/016_index_hygiene.sql +61 -0
- brain/migrations/017_elicit.sql +30 -0
- brain/migrations/018_review_gap_signal_kinds.sql +40 -0
- brain/migrations/019_search_queries.sql +35 -0
- brain/migrations/020_link_suggestions.sql +40 -0
- brain/migrations/021_timeline_doc_date.sql +34 -0
- brain/migrations/022_link_suggestions_undirected.sql +84 -0
- brain/migrations/023_search_queries_fts_count.sql +28 -0
- brain/quartz_overrides/__init__.py +8 -0
- brain/quartz_overrides/quartz/bootstrap-cli.mjs +65 -0
- brain/quartz_overrides/quartz/build.ts +568 -0
- brain/quartz_overrides/quartz/cli/args.js +152 -0
- brain/quartz_overrides/quartz/cli/build_partial_handler.js +544 -0
- brain/quartz_overrides/quartz/cli/handlers.js +636 -0
- brain/quartz_overrides/quartz/components/CommandPalette.tsx +172 -0
- brain/quartz_overrides/quartz/components/Explorer.tsx +198 -0
- brain/quartz_overrides/quartz/components/Footer.tsx +27 -0
- brain/quartz_overrides/quartz/components/Graph.tsx +468 -0
- brain/quartz_overrides/quartz/components/PageTitle.tsx +72 -0
- brain/quartz_overrides/quartz/components/RelatedDocs.tsx +38 -0
- brain/quartz_overrides/quartz/components/Search.tsx +161 -0
- brain/quartz_overrides/quartz/components/SummaryLede.tsx +72 -0
- brain/quartz_overrides/quartz/components/index.ts +92 -0
- brain/quartz_overrides/quartz/components/pages/TagContent.tsx +272 -0
- brain/quartz_overrides/quartz/components/scripts/commandPalette.inline.ts +665 -0
- brain/quartz_overrides/quartz/components/scripts/explorer.inline.ts +768 -0
- brain/quartz_overrides/quartz/components/scripts/graph.inline.ts +2302 -0
- brain/quartz_overrides/quartz/components/scripts/relatedDocs.inline.ts +163 -0
- brain/quartz_overrides/quartz/components/scripts/search.inline.ts +1011 -0
- brain/quartz_overrides/quartz/plugins/emitters/contentIndex.ts +546 -0
- brain/quartz_overrides/quartz/plugins/transformers/codeCopy.ts +94 -0
- brain/quartz_overrides/quartz/plugins/transformers/derivedFenceMark.ts +302 -0
- brain/quartz_overrides/quartz/plugins/transformers/emailThread.ts +148 -0
- brain/quartz_overrides/quartz/plugins/transformers/emptyDoorFilter.ts +213 -0
- brain/quartz_overrides/quartz/plugins/transformers/index.ts +114 -0
- brain/quartz_overrides/quartz/plugins/transformers/linkKindMark.ts +205 -0
- brain/quartz_overrides/quartz/plugins/transformers/linkSourceTag.ts +104 -0
- brain/quartz_overrides/quartz/plugins/transformers/relativeDate.ts +100 -0
- brain/quartz_overrides/quartz/plugins/transformers/reloadSignal.ts +131 -0
- brain/quartz_overrides/quartz/processors/parse.ts +371 -0
- brain/quartz_overrides/quartz/processors/parser_cache.ts +78 -0
- brain/quartz_overrides/quartz/static/brain-logo-dark.png +0 -0
- brain/quartz_overrides/quartz/static/brain-logo-light.png +0 -0
- brain/quartz_overrides/quartz/static/codeCopy.js +196 -0
- brain/quartz_overrides/quartz/static/emailThread.js +334 -0
- brain/quartz_overrides/quartz/static/favicon.ico +0 -0
- brain/quartz_overrides/quartz/static/icon.png +0 -0
- brain/quartz_overrides/quartz/static/linkSourceTag.js +104 -0
- brain/quartz_overrides/quartz/static/relativeDate.js +142 -0
- brain/quartz_overrides/quartz/static/reload.js +168 -0
- brain/quartz_overrides/quartz/styles/brain/_article.scss +252 -0
- brain/quartz_overrides/quartz/styles/brain/_atmosphere.scss +113 -0
- brain/quartz_overrides/quartz/styles/brain/_callouts.scss +180 -0
- brain/quartz_overrides/quartz/styles/brain/_cmdk.scss +7 -0
- brain/quartz_overrides/quartz/styles/brain/_code.scss +208 -0
- brain/quartz_overrides/quartz/styles/brain/_command_palette.scss +369 -0
- brain/quartz_overrides/quartz/styles/brain/_email_thread.scss +228 -0
- brain/quartz_overrides/quartz/styles/brain/_explorer.scss +142 -0
- brain/quartz_overrides/quartz/styles/brain/_home.scss +182 -0
- brain/quartz_overrides/quartz/styles/brain/_links.scss +322 -0
- brain/quartz_overrides/quartz/styles/brain/_marginalia.scss +117 -0
- brain/quartz_overrides/quartz/styles/brain/_motion.scss +175 -0
- brain/quartz_overrides/quartz/styles/brain/_people_hub.scss +100 -0
- brain/quartz_overrides/quartz/styles/brain/_related_docs.scss +137 -0
- brain/quartz_overrides/quartz/styles/brain/_search.scss +252 -0
- brain/quartz_overrides/quartz/styles/brain/_sidebar.scss +468 -0
- brain/quartz_overrides/quartz/styles/brain/_summary_lede.scss +56 -0
- brain/quartz_overrides/quartz/styles/brain/_surface.scss +43 -0
- brain/quartz_overrides/quartz/styles/brain/_tag_content.scss +118 -0
- brain/quartz_overrides/quartz/styles/brain/_tokens.scss +197 -0
- brain/quartz_overrides/quartz/styles/brain/_typography.scss +92 -0
- brain/quartz_overrides/quartz/styles/custom.scss +89 -0
- brain/quartz_overrides/quartz/styles/graph.scss +505 -0
- brain/quartz_overrides/quartz/util/ctx.ts +92 -0
- brain/quartz_overrides/quartz/util/fastpath_manifest.ts +608 -0
- brain/quartz_overrides/quartz/util/path.ts +358 -0
- brain/quartz_overrides/quartz/util/sourceIcons.ts +55 -0
- brain/quartz_overrides/quartz.config.ts +270 -0
- brain/quartz_overrides/quartz.layout.ts +314 -0
- brain/queries.py +1188 -0
- brain/rank_fusion.py +8 -0
- brain/resurface.py +210 -0
- brain/review/__init__.py +26 -0
- brain/review/emit.py +27 -0
- brain/review/queries.py +436 -0
- brain/review/render.py +196 -0
- brain/review/scans.py +355 -0
- brain/review/weekly.py +413 -0
- brain/search.py +704 -0
- brain/set_similarity.py +15 -0
- brain/setup.py +1205 -0
- brain/tags.py +56 -0
- brain/templates/Caddyfile.j2 +9 -0
- brain/templates/__init__.py +1 -0
- brain/templates/bin/__init__.py +1 -0
- brain/templates/bin/_brain-brief-fg.sh +25 -0
- brain/templates/bin/_brain-build-fg.sh +53 -0
- brain/templates/bin/_brain-watcher-fg.sh +65 -0
- brain/templates/bin/brain-down.sh +89 -0
- brain/templates/bin/brain-status.sh +83 -0
- brain/templates/bin/brain-up.sh +221 -0
- brain/templates/docker/age/Dockerfile +79 -0
- brain/templates/docker-compose.stock.yml.j2 +26 -0
- brain/templates/docker-compose.yml.j2 +34 -0
- brain/templates/env.example +190 -0
- brain/templates/launchd/__init__.py +1 -0
- brain/templates/launchd/com.brain.brief.plist.j2 +45 -0
- brain/templates/launchd/com.brain.build.plist.j2 +46 -0
- brain/templates/launchd/com.brain.watcher.plist.j2 +46 -0
- brain/templates/skill/SKILL.md +63 -0
- brain/templates/skill/__init__.py +1 -0
- brain/timeline.py +834 -0
- brain/todo.py +124 -0
- brain/uninstall.py +185 -0
- brain/vault/__init__.py +115 -0
- brain/vault/_atomic.py +25 -0
- brain/vault/daily_index.py +228 -0
- brain/vault/derived_links/__init__.py +50 -0
- brain/vault/derived_links/directory.py +683 -0
- brain/vault/derived_links/fence.py +408 -0
- brain/vault/derived_links/gws.py +64 -0
- brain/vault/derived_links/participants.py +143 -0
- brain/vault/derived_links/pass_runner.py +362 -0
- brain/vault/derived_links/rules.py +137 -0
- brain/vault/export.py +683 -0
- brain/vault/frontmatter.py +165 -0
- brain/vault/graph.py +620 -0
- brain/vault/graph_format.py +388 -0
- brain/vault/link_rewrite.py +235 -0
- brain/vault/links.py +260 -0
- brain/vault/note_builder.py +211 -0
- brain/vault/paths.py +55 -0
- brain/vault/quartz_overlay.py +236 -0
- brain/vault/rename.py +591 -0
- brain/vault/resolver.py +304 -0
- brain/vault/slug.py +127 -0
- brain/vault/sync.py +1513 -0
- brain/vault/sync_summaries.py +264 -0
- brain/vault/templates.py +145 -0
- brain/vault/watch.py +1052 -0
- brain/wiki/__init__.py +6 -0
- brain/wiki/_github_slugger.py +76 -0
- brain/wiki/_person_name.py +314 -0
- brain/wiki/build_homepage.py +541 -0
- brain/wiki/build_partial.py +273 -0
- brain/wiki/build_people.py +934 -0
- brain/wiki/build_related.py +758 -0
- brain/wiki/build_swap.py +585 -0
- brain/wiki/build_watcher.py +975 -0
- brain/wiki/edit_classifier.py +215 -0
- brain/wiki/errors.py +10 -0
- brain/wiki/fastpath_manifest.py +475 -0
- brain/wiki/fastpath_state.py +174 -0
- brain/wiki/install.py +296 -0
- brain/wiki/slug.py +111 -0
- secondbrain_py-0.2.1.dist-info/METADATA +195 -0
- secondbrain_py-0.2.1.dist-info/RECORD +273 -0
- secondbrain_py-0.2.1.dist-info/WHEEL +5 -0
- secondbrain_py-0.2.1.dist-info/entry_points.txt +11 -0
- secondbrain_py-0.2.1.dist-info/licenses/LICENSE +21 -0
- secondbrain_py-0.2.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
// Brain design tokens — the single source of truth for the redesign.
|
|
2
|
+
//
|
|
3
|
+
// Defined as CSS custom properties on `:root` and `:root[saved-theme="dark"]`
|
|
4
|
+
// (Quartz toggles dark mode by setting the `saved-theme` attribute on
|
|
5
|
+
// `<html>` — see `quartz/components/scripts/darkmode.inline.ts`).
|
|
6
|
+
//
|
|
7
|
+
// What lives here:
|
|
8
|
+
// * Surface tiers (`--surface-0/1/2`) — page bg, card/sidebar bg,
|
|
9
|
+
// inline-code/popover bg.
|
|
10
|
+
// * Ink scale (`--ink-0/1/2`) — primary / secondary / muted text.
|
|
11
|
+
// Aliased to Quartz's `--dark` / `--darkgray` / `--gray` so the
|
|
12
|
+
// scale stays in sync with `theme.colors`.
|
|
13
|
+
// * Accent aliases (`--accent-soft`, `--accent-strong`) — the
|
|
14
|
+
// softened (12% alpha) and full-strength terracotta. Aliased to
|
|
15
|
+
// Quartz's `--highlight` and `--secondary` respectively.
|
|
16
|
+
// * Hairline rule color (`--rule`) — used for column rules,
|
|
17
|
+
// callout borders, indent guides.
|
|
18
|
+
// * Shadow tiers (`--shadow-sm`, `--shadow-md`) — subtle depth
|
|
19
|
+
// for cards and pre-blocks. Dark mode swaps to outline-shadows
|
|
20
|
+
// because alpha shadows on near-black bg lose depth.
|
|
21
|
+
// * Modular type scale (`--fs-xs … --fs-4xl`) — major-third (1.250)
|
|
22
|
+
// scale; consumed by `typography.scss` and `article.scss`.
|
|
23
|
+
// * Motion timings (`--motion-fast/mid/slow`) + shared easing
|
|
24
|
+
// (`--motion-easing`) — used by `links.scss`, `motion.scss`,
|
|
25
|
+
// and the Lane D Cmd-K modal.
|
|
26
|
+
// * Source palette (`--brain-source-*`) + tier palette
|
|
27
|
+
// (`--brain-tier-*`) — moved from `graph.scss` so the graph and
|
|
28
|
+
// ingested-link styles share one source of truth (Lane B reads
|
|
29
|
+
// `--brain-source-*` for `[kind=ingested]` left-rail color).
|
|
30
|
+
//
|
|
31
|
+
// What does NOT live here:
|
|
32
|
+
// * `--light`, `--lightgray`, `--gray`, `--darkgray`, `--dark`,
|
|
33
|
+
// `--secondary`, `--tertiary`, `--highlight`, `--textHighlight`,
|
|
34
|
+
// `--bodyFont`, `--headerFont`, `--codeFont`, `--titleFont` —
|
|
35
|
+
// these are emitted by `quartz/util/theme.ts::joinStyles()` from
|
|
36
|
+
// `quartz.config.ts` `theme.colors` / `theme.typography`. Don't
|
|
37
|
+
// re-declare them here; alias them when useful.
|
|
38
|
+
|
|
39
|
+
:root {
|
|
40
|
+
// Surface tiers (light mode). Pure-neutral zinc tiers — Linear-style
|
|
41
|
+
// pure white on top of progressively-tinted near-whites. Reads as
|
|
42
|
+
// tech-forward chrome, not paper.
|
|
43
|
+
--surface-0: #ffffff; // page bg (matches `--light`)
|
|
44
|
+
--surface-1: #fafafa; // cards, sidebars (zinc-50)
|
|
45
|
+
--surface-2: #f4f4f5; // inline code, popovers (zinc-100)
|
|
46
|
+
|
|
47
|
+
// Ink scale (light mode). Aliased to Quartz tokens so future
|
|
48
|
+
// palette tweaks in `quartz.config.ts` propagate without hunting.
|
|
49
|
+
--ink-0: var(--dark); // primary text (deepest)
|
|
50
|
+
--ink-1: var(--darkgray); // secondary text / body running color
|
|
51
|
+
--ink-2: var(--gray); // muted text, metadata, dingbats
|
|
52
|
+
|
|
53
|
+
// Accent aliases. Lane B (`links.scss`) consumes these heavily.
|
|
54
|
+
--accent-soft: var(--highlight); // 12%-alpha indigo-violet
|
|
55
|
+
--accent-strong: var(--secondary); // full-saturation indigo-violet
|
|
56
|
+
|
|
57
|
+
// Semantic font alias. Quartz emits `--headerFont` / `--bodyFont` /
|
|
58
|
+
// `--codeFont` / `--titleFont` from `quartz.config.ts`; the redesign
|
|
59
|
+
// plan and downstream Lane B/C/D code refer to the *role*
|
|
60
|
+
// (`--displayFont`) rather than Quartz's internal naming. One alias
|
|
61
|
+
// keeps the plan's selectors verbatim across all four lanes.
|
|
62
|
+
--displayFont: var(--headerFont);
|
|
63
|
+
|
|
64
|
+
// Hairline rule. zinc-200, matches `--lightgray` for a clean
|
|
65
|
+
// tech-forward hairline.
|
|
66
|
+
--rule: #e4e4e7;
|
|
67
|
+
|
|
68
|
+
// Scrim — backdrop tint for modal overlays (Cmd-K, future modals).
|
|
69
|
+
// Solid neutral 60% black; tech aesthetic prefers an honest neutral
|
|
70
|
+
// scrim over a warm-tinted one.
|
|
71
|
+
--scrim: rgba(0, 0, 0, 0.6);
|
|
72
|
+
|
|
73
|
+
// Shadow tiers. Tech-forward subtle elevation — a hairline top edge
|
|
74
|
+
// (1px) plus a slightly larger downward drop. Linear's exact recipe.
|
|
75
|
+
--shadow-sm: 0 1px 0 rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.06);
|
|
76
|
+
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);
|
|
77
|
+
|
|
78
|
+
// Modular scale (1.250 — major third). Single ratio across
|
|
79
|
+
// headings, metadata, body, and pull-quotes; keeps the page in
|
|
80
|
+
// visual rhythm without per-element fine-tuning.
|
|
81
|
+
--fs-xs: 0.75rem;
|
|
82
|
+
--fs-sm: 0.875rem;
|
|
83
|
+
--fs-base: 1rem;
|
|
84
|
+
--fs-md: 1.125rem;
|
|
85
|
+
--fs-lg: 1.25rem;
|
|
86
|
+
--fs-xl: 1.563rem;
|
|
87
|
+
--fs-2xl: 1.953rem;
|
|
88
|
+
--fs-3xl: 2.441rem;
|
|
89
|
+
--fs-4xl: 3.052rem;
|
|
90
|
+
|
|
91
|
+
// Motion timings. Easing is a smooth-out-quint
|
|
92
|
+
// (`cubic-bezier(0.2, 0.8, 0.2, 1)`) — overshoots the midpoint
|
|
93
|
+
// briefly then eases in, which feels paper-like and confident
|
|
94
|
+
// rather than bouncy. Defined as a named token so transition
|
|
95
|
+
// declarations stay short: `transition: opacity var(--motion-fast) var(--motion-easing)`.
|
|
96
|
+
--motion-fast: 150ms;
|
|
97
|
+
--motion-mid: 250ms;
|
|
98
|
+
--motion-slow: 400ms;
|
|
99
|
+
--motion-easing: cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
100
|
+
|
|
101
|
+
// Stagger delays for the page-load reveal sequence (Lane D —
|
|
102
|
+
// `_motion.scss`). Sequence-relative — each step is one
|
|
103
|
+
// `--motion-fast` (150ms) apart, starting at one half-step (50ms)
|
|
104
|
+
// so the cascade reads as a smooth flow rather than three separate
|
|
105
|
+
// animations. Theme-agnostic; no dark-mode counterpart needed.
|
|
106
|
+
--motion-stagger-1: 50ms;
|
|
107
|
+
--motion-stagger-2: 150ms;
|
|
108
|
+
--motion-stagger-3: 250ms;
|
|
109
|
+
|
|
110
|
+
// Tier palette (moved from `graph.scss`). `vault` covers authored
|
|
111
|
+
// notes (Phase A/B/C); `ingested` covers `_ingested/` notes that
|
|
112
|
+
// came from external sources via `brain ingest*`. Terracotta vs
|
|
113
|
+
// sage gives a strong cluster cue without clashing with the
|
|
114
|
+
// default Quartz body palette.
|
|
115
|
+
--brain-tier-vault: #b85427;
|
|
116
|
+
--brain-tier-ingested: #7a8a6b;
|
|
117
|
+
|
|
118
|
+
// Source palette (moved from `graph.scss`). Each `brain ingest
|
|
119
|
+
// --source <name>` value gets a distinct hue so a quick eye-scan
|
|
120
|
+
// over the graph clusters krisp / slack / gmail / manual zones
|
|
121
|
+
// at a glance. Hues picked to be perceptually distinct in light
|
|
122
|
+
// mode and to keep contrast against the cream `--surface-0` bg.
|
|
123
|
+
// Lane B reads these for the ingested-link source-tint left rail.
|
|
124
|
+
--brain-source-krisp: #8b6cab;
|
|
125
|
+
--brain-source-slack: #4a9eba;
|
|
126
|
+
--brain-source-gmail: #d4956a;
|
|
127
|
+
--brain-source-manual: #5c5340;
|
|
128
|
+
|
|
129
|
+
// Callout palette (Lane C, Linear variant). Tech-forward Tailwind-500
|
|
130
|
+
// hues against pure-white surfaces. Consumed by `_callouts.scss` to
|
|
131
|
+
// retint stock chrome via the `--type-color` pattern, and by
|
|
132
|
+
// `_code.scss` for the success-state copy-button flash.
|
|
133
|
+
--callout-note: var(--accent-strong); // indigo-violet (Linear accent)
|
|
134
|
+
--callout-info: #0ea5e9; // sky-500
|
|
135
|
+
--callout-abstract: #06b6d4; // cyan-500
|
|
136
|
+
--callout-tip: #10b981; // emerald-500
|
|
137
|
+
--callout-success: #22c55e; // green-500
|
|
138
|
+
--callout-question: #eab308; // yellow-500
|
|
139
|
+
--callout-warning: #f59e0b; // amber-500
|
|
140
|
+
--callout-danger: #ef4444; // red-500
|
|
141
|
+
--callout-failure: #ef4444; // shared with danger
|
|
142
|
+
--callout-bug: #ec4899; // pink-500
|
|
143
|
+
--callout-example: #8b5cf6; // violet-500
|
|
144
|
+
--callout-quote: var(--ink-2); // muted ink — quote reads as soft
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Dark mode. Quartz toggles via `<html saved-theme="dark">` (see
|
|
148
|
+
// `darkmode.inline.ts` line 3 + the matching `:root[saved-theme="dark"]`
|
|
149
|
+
// declarations in `quartz/util/theme.ts`). The legacy graph.scss block
|
|
150
|
+
// uses `[data-theme="dark"]` which never matches — preserved here as
|
|
151
|
+
// the correct selector so source palette swaps actually fire in dark mode.
|
|
152
|
+
:root[saved-theme="dark"] {
|
|
153
|
+
// Charcoal surface tiers. Linear-style near-black on top of slightly
|
|
154
|
+
// lifted neutral charcoals — the headline mode for the tech-forward
|
|
155
|
+
// variant.
|
|
156
|
+
--surface-0: #0a0a0a;
|
|
157
|
+
--surface-1: #161618;
|
|
158
|
+
--surface-2: #1f1f23;
|
|
159
|
+
|
|
160
|
+
--rule: #27272a;
|
|
161
|
+
|
|
162
|
+
// Scrim — solid neutral black at 60% so the scrim doesn't pull warm
|
|
163
|
+
// at the edges. Matches light-mode's neutral treatment.
|
|
164
|
+
--scrim: rgba(0, 0, 0, 0.6);
|
|
165
|
+
|
|
166
|
+
// Outline shadows replace alpha shadows in dark mode. Alpha-on-near-
|
|
167
|
+
// black loses all visible elevation; a 1px hairline outline reads as
|
|
168
|
+
// depth without darkening the surface further.
|
|
169
|
+
--shadow-sm: 0 0 0 1px var(--rule);
|
|
170
|
+
--shadow-md: 0 0 0 1px var(--rule), 0 4px 16px rgba(0, 0, 0, 0.4);
|
|
171
|
+
|
|
172
|
+
// Tier + source palette (lifted lightness, muted saturation for
|
|
173
|
+
// dark-bg legibility). Same hue dimensions as light mode.
|
|
174
|
+
--brain-tier-vault: #e08552;
|
|
175
|
+
--brain-tier-ingested: #c5cda1;
|
|
176
|
+
|
|
177
|
+
--brain-source-krisp: #b491cf;
|
|
178
|
+
--brain-source-slack: #76c1d9;
|
|
179
|
+
--brain-source-gmail: #e8b385;
|
|
180
|
+
--brain-source-manual: #8a7e63;
|
|
181
|
+
|
|
182
|
+
// Callout palette — dark variant (Linear). Lifted ~30% lightness from
|
|
183
|
+
// the light-mode Tailwind-500 hues into Tailwind-400 territory so
|
|
184
|
+
// the chips read on charcoal without being too aggressive.
|
|
185
|
+
--callout-note: var(--accent-strong); // brighter indigo (already lifted via theme.colors)
|
|
186
|
+
--callout-info: #38bdf8; // sky-400
|
|
187
|
+
--callout-abstract: #22d3ee; // cyan-400
|
|
188
|
+
--callout-tip: #34d399; // emerald-400
|
|
189
|
+
--callout-success: #4ade80; // green-400
|
|
190
|
+
--callout-question: #facc15; // yellow-400
|
|
191
|
+
--callout-warning: #fbbf24; // amber-400
|
|
192
|
+
--callout-danger: #f87171; // red-400
|
|
193
|
+
--callout-failure: #f87171;
|
|
194
|
+
--callout-bug: #f472b6; // pink-400
|
|
195
|
+
--callout-example: #a78bfa; // violet-400
|
|
196
|
+
--callout-quote: var(--ink-2);
|
|
197
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Brain typography system — Linear-style variant of the 2026 redesign.
|
|
2
|
+
//
|
|
3
|
+
// `quartz.config.ts` `theme.typography` sets:
|
|
4
|
+
// header → Geist (var(--headerFont) / var(--titleFont))
|
|
5
|
+
// body → Geist (var(--bodyFont))
|
|
6
|
+
// code → Geist Mono (var(--codeFont))
|
|
7
|
+
//
|
|
8
|
+
// This file:
|
|
9
|
+
// * Locks the modular scale onto `body` defaults + h1–h4.
|
|
10
|
+
// * Tightens leading + tracking to Geist's intended slight tightness.
|
|
11
|
+
// * Stays on lining proportional numerals — the tech aesthetic
|
|
12
|
+
// prefers clean digits everywhere; tabular contexts (`th`, `td`)
|
|
13
|
+
// still switch to tabular-nums for column alignment.
|
|
14
|
+
//
|
|
15
|
+
// Order note: this file `@use`s nothing — relies on `_tokens.scss`
|
|
16
|
+
// having been imported earlier in `custom.scss` so `--fs-*` resolve.
|
|
17
|
+
|
|
18
|
+
html {
|
|
19
|
+
// Anchor the rem scale at 16px on the root so `--fs-base: 1rem`
|
|
20
|
+
// lands at exactly 16px regardless of any user-agent tweaks Quartz's
|
|
21
|
+
// base.scss might inherit. Geist at 16px is its body sweet spot.
|
|
22
|
+
font-size: 100%;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
body {
|
|
26
|
+
// Body running text: Geist, lining numerals, slightly negative
|
|
27
|
+
// tracking (Geist's intended baseline tightness).
|
|
28
|
+
font-family: var(--bodyFont);
|
|
29
|
+
font-size: var(--fs-base);
|
|
30
|
+
line-height: 1.6;
|
|
31
|
+
letter-spacing: -0.011em;
|
|
32
|
+
|
|
33
|
+
// Lining proportional numerals + standard kerning/ligatures. Geist
|
|
34
|
+
// doesn't ship oldstyle numerals; lining numerals are correct for
|
|
35
|
+
// the tech aesthetic anyway.
|
|
36
|
+
font-feature-settings: "kern", "liga";
|
|
37
|
+
font-variant-numeric: lining-nums proportional-nums;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Display headings — Geist semibold. Tighter tracking than body
|
|
41
|
+
// because grotesk display faces sit visually loose at large sizes
|
|
42
|
+
// without negative tracking. Weight 600 (semibold) reads more
|
|
43
|
+
// confident than 700 against grotesk body.
|
|
44
|
+
h1,
|
|
45
|
+
h2,
|
|
46
|
+
h3,
|
|
47
|
+
h4,
|
|
48
|
+
h5,
|
|
49
|
+
h6 {
|
|
50
|
+
font-family: var(--headerFont);
|
|
51
|
+
font-weight: 600;
|
|
52
|
+
line-height: 1.15;
|
|
53
|
+
letter-spacing: -0.022em;
|
|
54
|
+
font-variant-numeric: lining-nums proportional-nums;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
h1 {
|
|
58
|
+
font-size: var(--fs-3xl);
|
|
59
|
+
}
|
|
60
|
+
h2 {
|
|
61
|
+
font-size: var(--fs-2xl);
|
|
62
|
+
}
|
|
63
|
+
h3 {
|
|
64
|
+
font-size: var(--fs-xl);
|
|
65
|
+
}
|
|
66
|
+
h4 {
|
|
67
|
+
font-size: var(--fs-lg);
|
|
68
|
+
}
|
|
69
|
+
h5 {
|
|
70
|
+
font-size: var(--fs-md);
|
|
71
|
+
}
|
|
72
|
+
h6 {
|
|
73
|
+
font-size: var(--fs-base);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Tabular data switches to tabular widths so columns of numbers align
|
|
77
|
+
// under each other.
|
|
78
|
+
th,
|
|
79
|
+
td {
|
|
80
|
+
font-variant-numeric: lining-nums tabular-nums;
|
|
81
|
+
font-feature-settings: "tnum", "kern";
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Code paths stay on Geist Mono. base.scss already wires `code`,
|
|
85
|
+
// `pre code`, `kbd` to `var(--codeFont)`; we just lock numerals to
|
|
86
|
+
// tabular so column-aligned snippets read cleanly.
|
|
87
|
+
code,
|
|
88
|
+
kbd,
|
|
89
|
+
pre,
|
|
90
|
+
samp {
|
|
91
|
+
font-variant-numeric: tabular-nums;
|
|
92
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Brain wiki global styles — entry point for the 2026 redesign.
|
|
2
|
+
//
|
|
3
|
+
// This file is installed at `<vault>/.quartz/quartz/styles/custom.scss`
|
|
4
|
+
// by `brain vault render --overlay` and is Quartz's intended seam for
|
|
5
|
+
// global customizations (stock content is just `@use "./base.scss"`).
|
|
6
|
+
//
|
|
7
|
+
// Layering order (top-to-bottom = first-loaded → last-loaded):
|
|
8
|
+
//
|
|
9
|
+
// 1. base.scss — Quartz's stock chrome + variables (must come
|
|
10
|
+
// first; everything below cascades over it).
|
|
11
|
+
// 2. brain/tokens — design tokens: colors, fonts, sizes, motion.
|
|
12
|
+
// Defines the vars consumed everywhere else.
|
|
13
|
+
// 3. brain/typography — modular type scale + Newsreader / Fraunces /
|
|
14
|
+
// JetBrains Mono application + numerals.
|
|
15
|
+
// 4. brain/surface — page / card / inline-code surface tiers +
|
|
16
|
+
// shadows.
|
|
17
|
+
// 5. brain/atmosphere — Lane D — paper grain, hairline rules,
|
|
18
|
+
// dingbat section breaks.
|
|
19
|
+
// 6. brain/motion — Lane D — page-load reveal animations and
|
|
20
|
+
// shared timing/easing tokens consumers use.
|
|
21
|
+
// 7. brain/links — Lane B — link-kind underline + tag chip +
|
|
22
|
+
// source-tinted ingested-tier rules.
|
|
23
|
+
// 8. brain/sidebar — Lane C — left/right sidebar layout polish.
|
|
24
|
+
// 8a. brain/command_palette — Lane C/P5.3 — Cmd/Ctrl-P palette modal visuals.
|
|
25
|
+
// Listed between sidebar and article so the
|
|
26
|
+
// modal chrome inherits the surface scale
|
|
27
|
+
// but doesn't interfere with article rules.
|
|
28
|
+
// 8b. brain/search — P3.2 — search popover: chip rail, source-
|
|
29
|
+
// icon result rows, lazy preview pane. Loaded
|
|
30
|
+
// after sidebar so the chip rail can layer on
|
|
31
|
+
// top of the sticky search header without the
|
|
32
|
+
// sidebar's bottom hairline painting through.
|
|
33
|
+
// 9. brain/article — Lane C — article column measure + heading
|
|
34
|
+
// rhythm + blockquote + meta typography.
|
|
35
|
+
// 10. brain/marginalia — Lane D — backlinks-as-figure-margin notes
|
|
36
|
+
// on wide viewports.
|
|
37
|
+
// 11. brain/callouts — Lane C — refreshed callout palette + chrome.
|
|
38
|
+
// 12. brain/code — Lane C — pre/inline code surface + copy
|
|
39
|
+
// button styling.
|
|
40
|
+
// 13. brain/home — Lane C — index card grid override.
|
|
41
|
+
// 14. brain/tag_content — P3.3 — per-tag listing rows.
|
|
42
|
+
// 15. brain/explorer — P4.2 — Explorer "Show ingested" toggle pill.
|
|
43
|
+
// 16. brain/email_thread — P4.4 — email-thread reading mode:
|
|
44
|
+
// per-message <details> chrome + "Show only
|
|
45
|
+
// my replies" filter button + visibility
|
|
46
|
+
// rule. Loaded after `article` so the
|
|
47
|
+
// section card chrome cascades over the
|
|
48
|
+
// base article-level <details> styling
|
|
49
|
+
// (none in stock Quartz, but defensively
|
|
50
|
+
// ordered).
|
|
51
|
+
// 17. brain/related_docs — P5.2 — semantic-related right-sidebar
|
|
52
|
+
// panel fed by `/static/related/<slug>.json`.
|
|
53
|
+
// 18. brain/people_hub — 2026-05-07 People Hub — `kind: people`
|
|
54
|
+
// page-kind styling for `<vault>/people/<slug>.md`
|
|
55
|
+
// + the `/people/index` directory landing page.
|
|
56
|
+
// 19. brain/summary_lede — Wave Q2-SUMMARY-WIKI — soft TL;DR card
|
|
57
|
+
// above the article body. Reads
|
|
58
|
+
// `frontmatter.summary` (sourced from Q1-D
|
|
59
|
+
// `documents.summary`). Loaded last so the
|
|
60
|
+
// card rules cascade over earlier article /
|
|
61
|
+
// callout chrome.
|
|
62
|
+
//
|
|
63
|
+
// Lane A (this PR) ships only `tokens`, `typography`, `surface`. Lanes
|
|
64
|
+
// B/C/D files exist as one-line placeholder stubs so SCSS can resolve
|
|
65
|
+
// every `@use` import — without the stubs, dart-sass aborts the
|
|
66
|
+
// build with "Can't find stylesheet to import." Subsequent lanes
|
|
67
|
+
// fill the placeholders in place.
|
|
68
|
+
|
|
69
|
+
@use "./base.scss";
|
|
70
|
+
@use "./brain/tokens";
|
|
71
|
+
@use "./brain/typography";
|
|
72
|
+
@use "./brain/surface";
|
|
73
|
+
@use "./brain/atmosphere"; // Lane D
|
|
74
|
+
@use "./brain/motion"; // Lane D
|
|
75
|
+
@use "./brain/links";
|
|
76
|
+
@use "./brain/sidebar";
|
|
77
|
+
@use "./brain/related_docs"; // P5.2 — semantic-related right-sidebar panel
|
|
78
|
+
@use "./brain/command_palette"; // P5.3 — Cmd-P quick-open modal visuals
|
|
79
|
+
@use "./brain/search"; // P3.2 — Search popover: chips, rows, preview
|
|
80
|
+
@use "./brain/article";
|
|
81
|
+
@use "./brain/marginalia"; // Lane D
|
|
82
|
+
@use "./brain/callouts";
|
|
83
|
+
@use "./brain/code";
|
|
84
|
+
@use "./brain/home";
|
|
85
|
+
@use "./brain/tag_content"; // P3.3 — per-tag listing rows (icon + title + date + snippet + footer)
|
|
86
|
+
@use "./brain/explorer"; // P4.2 — Explorer "Show ingested" toggle pill
|
|
87
|
+
@use "./brain/email_thread"; // P4.4 — Email-thread reading mode (collapsibles + replies-only filter)
|
|
88
|
+
@use "./brain/people_hub"; // 2026-05-07 People Hub — `kind: people` page styling for `<vault>/people/`
|
|
89
|
+
@use "./brain/summary_lede"; // Wave Q2-SUMMARY-WIKI — TL;DR lede above article body
|