Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions docs/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,18 @@ guidance in [CONTRIBUTING](../CONTRIBUTING.md).

## Tokens and appearance

The current owners are `packages/core/src/theme/presentation.ts`,
`desktop/src/styles/global.css` and `mobile/src/theme/index.ts`. Inspect current
source before changing them. Keep neutral light/dark surfaces and the restrained
blue accent; preserve semantic statuses and user-selected calendar/tag colors.
The current owners are `web/src/ui/tokens.css` for the rebuilt web app,
`packages/core/src/theme/presentation.ts`, `desktop/src/styles/global.css` and
`mobile/src/theme/index.ts`. Inspect current source before changing them.

The web app uses the Orbyn house style shared with Orbyn Engineering (owner decision,
November 2026): Geist for text and JetBrains Mono for code, served from
`web/public/fonts`; Light, Dark and Dim themes; headings at medium weight, never
bold. At most three colours appear in the interface: ink for everything, including
live and selected states; amber (`--warn`) when the person must act; red
(`--danger`) for failures and removals. Done, working and selected states are ink.
Calendar, list, tag, project and booking-page colours are content the person chose
and keep their own colour. There is no 3D calendar view.

| Text role | Base size | Use |
| --------- | --------- | ---------------------------------------------------- |
Expand Down Expand Up @@ -69,8 +77,8 @@ acceptance. Record checks of changed flows under [verification](verification.md)
- Keep one clear action per outcome. Remove duplicate controls, competing toolbars
and explanations of obvious actions. Put rare management actions in the existing
overflow menu. Icon-only controls need accessible names and keyboard focus.
- Use the current accent, neutral surfaces, text roles and spacing tokens. Do not
introduce a new palette or shrink text to hide layout problems. Filled/bordered
- Use the house-style tokens, text roles and spacing tokens. Do not add colours
beyond ink, amber and red, or shrink text to hide layout problems. Filled/bordered
controls need padding and consistent heights; mobile touch targets remain usable.
- Respond to the actual pane width. Preserve user-selected sidebar widths; opening
another pane must not reset them. Align pane/tab headers and avoid duplicate
Expand Down
6 changes: 3 additions & 3 deletions web/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Orbyn</title>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563eb' stroke-width='1.8' stroke-linecap='round'%3E%3Cpath d='M20.341 6.484A10 10 0 0 1 10.266 21.85'/%3E%3Cpath d='M3.659 17.516A10 10 0 0 1 13.74 2.152'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Ccircle cx='19' cy='5' r='2'/%3E%3Ccircle cx='5' cy='19' r='2'/%3E%3C/svg%3E" />
<link rel="preload" href="/fonts/dm-sans-latin-ca72d2bcea8f.woff2" as="font" type="font/woff2" crossorigin />
<link rel="preload" href="/fonts/manrope-latin-8c2def024c1b.woff2" as="font" type="font/woff2" crossorigin />
<link rel="stylesheet" href="/fonts/fonts-5d9f0bf2e309.css" />
<link rel="preload" href="/fonts/geist-latin-9b6f5ff45b27.woff2" as="font" type="font/woff2" crossorigin />
<link rel="preload" href="/fonts/jetbrains-mono-latin-1e06740a02a4.woff2" as="font" type="font/woff2" crossorigin />
<link rel="stylesheet" href="/fonts/fonts-3822d62d9e34.css" />
</head>
<body>
<div id="root"></div>
Expand Down
29 changes: 14 additions & 15 deletions web/public/fonts/README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
# Web typefaces

Orbyn serves DM Sans and Manrope from this directory. No font stylesheet or font
binary is requested from Google while the application runs. The existing family
names, system fallbacks and text roles remain in `src/ui/tokens.css`.
Orbyn serves Geist and JetBrains Mono from this directory. No font stylesheet or font
binary is requested from Google while the application runs. Family names, system
fallbacks and text roles live in `src/ui/tokens.css`.

These are unmodified WOFF2 variable-font subsets distributed by Google Fonts:
DM Sans v17, weight 100–1000 and optical size 9–40; Manrope v23, weight 200–800.
The local stylesheet retains their published Unicode ranges and `font-display:
swap`. Latin faces are preloaded; additional script subsets load on demand.
Content hashes in filenames change when the font bytes change.
These are unmodified WOFF2 variable-font subsets distributed by Google Fonts: Geist,
weight 100–900, and JetBrains Mono, weight 100–800. The local stylesheet keeps their
published Unicode ranges and `font-display: swap`. Latin faces are preloaded;
additional script subsets load on demand. Content hashes in filenames change when the
font bytes change.

Both families use the SIL Open Font License 1.1. Keep the complete copyright and
licence notices with the distributed fonts:

- [DM Sans licence](dm-sans-OFL.txt), from the
[Google Fonts DM Sans directory](https://github.com/google/fonts/tree/main/ofl/dmsans).
- [Manrope licence](manrope-OFL.txt), from the
[Google Fonts Manrope directory](https://github.com/google/fonts/tree/main/ofl/manrope).
- [Geist licence](geist-OFL.txt), from the
[Google Fonts Geist directory](https://github.com/google/fonts/tree/main/ofl/geist).
- [JetBrains Mono licence](jetbrains-mono-OFL.txt), from the
[Google Fonts JetBrains Mono directory](https://github.com/google/fonts/tree/main/ofl/jetbrainsmono).

[sources.json](sources.json) records the exact official stylesheet request, font
URLs, byte counts and SHA-256 hashes. Licence bytes were checked against the listed
Git blob identities. No font has been renamed internally, subsetted or converted
by Orbyn. Unsupported glyphs continue to use the declared system fallback.
URLs, byte counts and SHA-256 hashes. No font has been renamed internally, subsetted
or converted by Orbyn. Unsupported glyphs continue to use the declared system fallback.
Binary file removed web/public/fonts/dm-sans-latin-ca72d2bcea8f.woff2
Binary file not shown.
Binary file not shown.
99 changes: 99 additions & 0 deletions web/public/fonts/fonts-3822d62d9e34.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
/* cyrillic-ext */
@font-face {
font-family: 'Geist';
font-style: normal;
font-weight: 100 900;
font-display: swap;
src: url(/fonts/geist-cyrillic-ext-b7a545bbb082.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Geist';
font-style: normal;
font-weight: 100 900;
font-display: swap;
src: url(/fonts/geist-cyrillic-6129fc8571c3.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Geist';
font-style: normal;
font-weight: 100 900;
font-display: swap;
src: url(/fonts/geist-vietnamese-f689f638f29f.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Geist';
font-style: normal;
font-weight: 100 900;
font-display: swap;
src: url(/fonts/geist-latin-ext-58a6b173d5ca.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Geist';
font-style: normal;
font-weight: 100 900;
font-display: swap;
src: url(/fonts/geist-latin-9b6f5ff45b27.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 100 800;
font-display: swap;
src: url(/fonts/jetbrains-mono-cyrillic-ext-992eea2f7021.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 100 800;
font-display: swap;
src: url(/fonts/jetbrains-mono-cyrillic-af7486955880.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 100 800;
font-display: swap;
src: url(/fonts/jetbrains-mono-greek-3edf363dbf9d.woff2) format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 100 800;
font-display: swap;
src: url(/fonts/jetbrains-mono-vietnamese-1390e86cc282.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 100 800;
font-display: swap;
src: url(/fonts/jetbrains-mono-latin-ext-7db7affbce1f.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 100 800;
font-display: swap;
src: url(/fonts/jetbrains-mono-latin-1e06740a02a4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
80 changes: 0 additions & 80 deletions web/public/fonts/fonts-5d9f0bf2e309.css

This file was deleted.

Loading
Loading