component
TuxAccordion
<details> + <summary> under the hood — zero JS, perfect a11y, keyboard navigation works without wiring. Two kinds: faq (Q&A rhythm) and publication (italic title + meta line for citations). canonical
FAQ
What does Landscape do that diskover doesn't?
Landscape ships per-institution themes and a classifier-aware indexing pipeline. The treemap, search facets, and audit trail are reimplemented on a modern stack — TanStack Virtual + OpenSearch instead of D3 v3 + ElasticSearch. It also bakes in TAMUS access tiers and ITAR compliance markers as first-class concerns.
How does authentication work for IT vs research staff?
Entra ID via oauth2-proxy at the edge — the app receives header-based identity. IT users get full RBAC; research staff get scoped tokens issued via the agent-tokens v2 system (hashed, scoped, revocable per-corpus).
Is there a CLI?
Yes. `landscape agent watch /path` indexes a directory and streams events to the central OpenSearch. `landscape agent token` manages scoped tokens. `landscape classifier list` shows the classifier catalog.
Can I deploy Landscape air-gapped?
The current target is TAMUS-network deployments. Air-gapped is feasible — fonts self-host (already wired), OpenSearch is offline-installable, and the only outbound dependencies are the Lucide CDN (replaceable with the bundled Iconify set) and Google Fonts (replaceable with self-hosted equivalents).
<TuxAccordion :items="faqItems" />single mode
Mutually exclusive
Pass single to make opening one item close the others (radio-style). Uses the native name attribute on <details> — graceful degradation in older browsers (they allow multiple open).
What does Landscape do that diskover doesn't?
Landscape ships per-institution themes and a classifier-aware indexing pipeline. The treemap, search facets, and audit trail are reimplemented on a modern stack — TanStack Virtual + OpenSearch instead of D3 v3 + ElasticSearch. It also bakes in TAMUS access tiers and ITAR compliance markers as first-class concerns.
How does authentication work for IT vs research staff?
Entra ID via oauth2-proxy at the edge — the app receives header-based identity. IT users get full RBAC; research staff get scoped tokens issued via the agent-tokens v2 system (hashed, scoped, revocable per-corpus).
Is there a CLI?
Yes. `landscape agent watch /path` indexes a directory and streams events to the central OpenSearch. `landscape agent token` manages scoped tokens. `landscape classifier list` shows the classifier catalog.
Can I deploy Landscape air-gapped?
The current target is TAMUS-network deployments. Air-gapped is feasible — fonts self-host (already wired), OpenSearch is offline-installable, and the only outbound dependencies are the Lucide CDN (replaceable with the bundled Iconify set) and Google Fonts (replaceable with self-hosted equivalents).
publication kind
Citation rhythm
Pass kind="publication". Title renders Georgia italic (the elegant face), and the meta field surfaces the citation line below the title in the summary. Click to expand the abstract.
Microsimulation in rural corridor planning
Microsimulation results from a twelve-county rural-roadway study, with before/after data spanning 36 months. Treated intersections received high-friction surface treatment, retroreflective markings, and chevron alignment packages. Compliance gains held steady through follow-up; three of twelve sites also showed reductions in late-night crashes.
Equity-weighted outcome measures for state DOT performance frameworks
Proposes an equity-weighted outcome measurement framework as a first-class component of state DOT performance dashboards. Validates against three years of Texas Triangle corridor data and demonstrates measurable shifts in resource-allocation decisions when equity outcomes are surfaced alongside efficiency metrics.
Continuous instrumentation of the Texas Triangle freight network
Operational summary of the 412-mile continuously-instrumented freight corridor that came online during FY 2025. Includes deployment schedule, sensor types, data-volume estimates, and the schema decisions behind the OpenSearch ingest layer.
slot composition
Rich content per item
Each item exposes a #item-{idx} slot for content richer than a single string — lists, tables, embedded components. Falls back to item.content when the slot is empty.
How does the agent file-watcher work?
The agent runs as a long-lived process and uses the OS-native file-watcher API (inotify on Linux, ReadDirectoryChangesW on Windows). Events are coalesced over a 250ms debounce window and shipped in batches:
- Create / modify / delete events for files
- Move detection via inode tracking on POSIX, fallback to hash-on-rename on Windows
- Soft-delete with 30-day retention before purge
See docs/agent-watching.md for the full event schema.
What gets indexed by default?
Filename, path, size, mtime, owner, file-type heuristic, and SHA-256. Classifier output (PII, ITAR markers, retention class) attaches asynchronously after the index pipeline picks up the new record.
props
Props + item shape
items— array of{ title, eyebrow?, meta?, content?, defaultOpen? }. Required.kind—"faq" | "publication". Defaults to"faq".single— exclusive group; opening one closes others. Defaults tofalse.#item-{idx}slots — rich content for any item.