Skip to content
Merged
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
Binary file removed design/matteshot-20260816-010907122-deep.png
Binary file not shown.
Binary file added design/matteshot-20260816-173924022-deep.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added design/matteshot-20260816-174000103-deep.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 6 additions & 2 deletions rust/src/cli/tty_runner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -704,9 +704,13 @@ mod tests {
#[test]
fn test_run_sends_script_through_pty() {
let runner = TtyCommandRunner::new();
// Generous on purpose: this measures a real shell starting on
// whatever machine runs the suite. A cold CI runner can take longer
// than two seconds to reach a prompt, and the test then sees only the
// banner and calls the PTY broken.
let opts = TtyCommandOptions::new()
.with_timeout(5.0)
.with_idle_timeout(2.0)
.with_timeout(30.0)
.with_idle_timeout(10.0)
.with_script_line_delay(0.1);

// Windows names the shell absolutely. A bare "cmd" resolves through
Expand Down
Binary file added site/ceiling-charts-heatmap.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified site/ceiling-taskbar.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 22 additions & 0 deletions site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,28 @@ <h3>Know what this window has cost you.</h3>
</div>
</div>

<div class="split-feature">
<div class="feature-copy">
<p class="feature-label">When you work</p>
<h3>Find the hours you actually build in.</h3>
<p>Ceiling already has the timestamps, so it can answer a question no provider dashboard will: not how much you used, but when. A 30-day strip and a weekday-by-hour grid, drawn from logs already on your disk.</p>
<ul class="feature-points">
<li>See your real working week, including the parts you would not have guessed.</li>
<li>Read it in tokens or in estimated API value, for Codex, Claude, and Grok, one at a time or together.</li>
<li>Nothing new is collected and nothing leaves the machine.</li>
</ul>
</div>
<div class="shot">
<img
src="/ceiling-charts-heatmap.png"
width="1040"
height="898"
loading="lazy"
alt="Ceiling's Charts tab showing estimated API value for the day beside an activity heatmap of the last 30 days by day and by hour"
/>
</div>
</div>

<div class="split-feature">
<div class="feature-copy">
<p class="feature-label">Always nearby</p>
Expand Down
Loading