Meet your self-organizing computer. Interface learns which tools , websites and documents you use together, keeps them together, and brings them back with one shortcut.
Claude Code — interface-v3 ❯ fix the token refresh bug
github.com/interface/app/issues/142 Token refresh fails after an hour
Pricing comparison — Sheets
google.com/travel/flights
Search work, apps and commands… Ask ⇥ Suggestions
Interface V3 31 things Workspace Pricing research 12 things Workspace Japan trip 9 things Workspace Commands
New workspace Interface Command Ask about your work Interface AI Command Open Workspace ↵ Actions ⌘ K Workspaces
Pricing research 12 things Workspace Open Workspace ↵ Actions ⌘ K Workspaces
Japan trip 9 things Workspace Open Workspace ↵ Actions ⌘ K Workspaces
Interface V3 31 things Workspace Open Workspace ↵ Actions ⌘ K Desktop Interface V3 Interface V3 Pricing research Japan trip Mon 9:41 AM
Work like you always do (but faster).Interface learns what belongs together.
Claude Code — interface-v3 ❯ fix the token refresh bug
github.com/interface/app/issues/142 google.com/travel/flights airbnb.com/s/Kyoto Token refresh fails after an hour
Used together · 23 times this week
Interface V3
Grouped automatically
4 things
TOOLS
WEBSITES
DOCUMENTS
Used together · 9 times this week
Japan trip
Grouped automatically
3 things
WEBSITES
DOCUMENTS
Google Flights WEBSITE SFO → KIX Claude Code TOOL interface-v3 Search work, apps and commands… Ask ⇥ Suggestions
Interface V3 31 things Workspace Pricing research 12 things Workspace Japan trip 9 things Workspace Commands
New workspace Interface Command Ask about your work Interface AI Command Open Workspace ↵ Actions ⌘ K Search work, apps and commands… Ask ⇥ Suggestions
Interface V3 31 things Workspace Pricing research 12 things Workspace Japan trip 9 things Workspace Commands
New workspace Interface Command Ask about your work Interface AI Command Open Workspace ↵ Actions ⌘ K
Claude Code — interface-v3 ❯ fix the token refresh bug
github.com/interface/app/issues/142
Token refresh fails after an hour
google.com/travel/flights 01 Use your computer normally.
Open apps, browse, open tabs. Nothing to set up.
02 Interface groups what you use together.
Things you use side by side become one piece of work, and each piece of work gets its own group.
03 Get back to any of it instantly.
Press ⌘ Space and pick the work: it all opens, laid out. Switching to another is just as quick.
Supercharge your productivity. Switch gears instantly Pick a piece of work and everything for it comes forward, right where you left off.
Focus on what’s important Only what you’re working on is in front of you. Everything else waits quietly.
Pricing research 3 things 4 things
Stay organized with no effort No folders, no setup. New tabs and files join the right work on their own.
Save workspaces you come back to Keep any set of windows as a workspace in one step. Everything else still organizes itself.
See it with your kind of work. Back-to-back calls Run agents Support & operations Engineering & product planning
Acme Robotics · 28:40Leave
Acme · next steps
1 Send the SSO proposal
2 Pilot kickoff with Luis on Friday
app.hubspot.com/deals/acme A Acme Robotics 40 seats · Proposal $48,000
Discovery
Demo
Proposal
Negotiation
Won
NEXT STEP Send the proposal and SSO docs
Close date Oct 31
Champion Dana Whitaker
Seats 40
Owner You
CONTACTS
DW Dana Whitaker VP Sales Ops
LO Luis Ortega RevOps lead
ACTIVITY
SSO pricing requested Today
Notion — Northwind onboarding KICKOFF AGENDA · PREPARED YESTERDAY
Northwind · implementation kickoff
✓ Security review approved
✓ 150 seats provisioned
01 Connect the team identity provider
02 Import the first shared workspace
03 Choose a pilot owner and launch date
Y Northwind · kickoff
Camera off · microphone muted
Join meeting KEEP OPEN DURING THE CALL
People & decisions
→ Priya owns SSO setup
→ Tom owns the pilot rollout
? Confirm the pilot start date
Notion — Northwind onboarding KICKOFF AGENDA · PREPARED YESTERDAY
Northwind · implementation kickoff
✓ Security review approved
✓ 150 seats provisioned
01 Connect the team identity provider
02 Import the first shared workspace
03 Choose a pilot owner and launch date
Y Northwind · kickoff
Camera off · microphone muted
Join meeting KEEP OPEN DURING THE CALL
People & decisions
→ Priya owns SSO setup
→ Tom owns the pilot rollout
? Confirm the pilot start date
Next: Northwind kickoff Meeting notes and setup checklist ready now Workspaces
Acme · sales call 3 windows Workspace Open Workspace ↵ Actions ⌘ K Workspaces
Northwind kickoff 3 windows Workspace Open Workspace ↵ Actions ⌘ K Desktop · 6 windows Acme · sales call Northwind · onboarding Tue 10:28 AM Tue 10:30 AM
Claude Code — billing migration ✻ Claude Code ~/app · billing-invoices
❯ migrate billing to the invoices schema
● Backfill invoice records on staging
✓ 8 of 14 migrations complete
● Run 009_tax_rates
✓ Tax rates verified
● Continue remaining migrations
Migrating on staging PR #231 ready❯
Staging — migration progress Invoice migration Staging
8 of 14 10 of 14 13 of 14 14 of 14
Notes — billing migration TASK BRIEF
Billing migration
→ Run against staging first
→ Keep old tables until verified
→ Open a PR for human review
github.com/interface/app/pull/232 Handle expired sessions #232
Ready for review 2 files changed · 12 tests passed
src/auth.ts
export async function refresh(token) {
const session = await verify(token)
− return issue(session.userId)
+ if (!session || session.expired) {
+ throw new AuthError('session expired')
+ }
+ return issue(session.userId, { ttl: '1h' })
}
Review changes before merging.
Claude Code — session fix ✻ Claude Code ~/app · session-fix
✓ Guard expired sessions
✓ Add regression coverage
✓ 12 tests passed
✓ Opened PR #232
Waiting for your review
❯
AUTH.TEST.TS
12 tests passed
✓ Expired sessions return 401
✓ Valid sessions refresh
✓ Signed-out sessions stay revoked
Claude Code — billing migration ✻ Claude Code ~/app · billing-invoices
❯ migrate billing to the invoices schema
● Backfill invoice records on staging
✓ 8 of 14 migrations complete
● Run 009_tax_rates
✓ Tax rates verified
● Continue remaining migrations
✓ 14 of 14 migrations complete
✓ 212 tests passed
✓ PR #231 ready for your review
❯
Staging — migration progress Invoice migration Staging
8 of 14 10 of 14 13 of 14 14 of 14
Notes — billing migration TASK BRIEF
Billing migration
→ Run against staging first
→ Keep old tables until verified
→ Open a PR for human review
github.com/interface/app/pull/232 Handle expired sessions #232
Ready for review 2 files changed · 12 tests passed
src/auth.ts
export async function refresh(token) {
const session = await verify(token)
− return issue(session.userId)
+ if (!session || session.expired) {
+ throw new AuthError('session expired')
+ }
+ return issue(session.userId, { ttl: '1h' })
}
Review changes before merging.
Claude Code — session fix ✻ Claude Code ~/app · session-fix
✓ Guard expired sessions
✓ Add regression coverage
✓ 12 tests passed
✓ Opened PR #232
Waiting for your review
❯
AUTH.TEST.TS
12 tests passed
✓ Expired sessions return 401
✓ Valid sessions refresh
✓ Signed-out sessions stay revoked
Session fix · PR #232 Tests passed. Ready for your review. now Billing migration · PR #231 Finished while you reviewed the session fix now Workspaces
Billing migration 3 windows Workspace Open Workspace ↵ Actions ⌘ K Search work, apps and commands… Ask ⇥ Workspaces
Billing migration Claude Code Running Session fix Claude Code Review ready Open Workspace ↵ Actions ⌘ K Search work, apps and commands… Ask ⇥ Workspaces
Billing migration Claude Code Review ready Session fix Claude Code Review ready Open Workspace ↵ Actions ⌘ K Desktop · 6 windows Billing migration Session fix · review Billing migration Wed 3:20 PM Wed 3:38 PM
Support — Maya Chen · #1842 INBOX / #1842 In progress
Invoice needs our company name
MC Maya Chen · Northstar Could you add Northstar Studio to invoice INV-1048? Our finance team needs it for reimbursement.
REPLY · DRAFT SAVED
Hi Maya, I found the invoice. I can update the billing name to Northstar Studio
Not sent
CUSTOMER RECORD
Northstar Studio
→ Contact: Maya Chen
→ Team plan · 24 seats
→ Billing email: finance@northstar.example
MATCHED TO THIS CUSTOMER
Invoice INV-1048
✓ Paid · September 1
→ Billing name: Maya Chen
→ Requested: Northstar Studio
Monitoring — payments-api Checkout errors Investigating · INC-42
Error rate
4.8%
payments-api
14:00 Deploy v2.8.1 · 14:12 14:20
POST /checkout Authorization timeoutsOn-call · Alex Rivera
Notion — checkout runbook INCIDENT INC-42
Checkout recovery
01 Compare errors with the last deploy
02 Check payment-provider health
03 Confirm rollback with the on-call lead
# inc-checkout
AR Alex Rivera Errors began after v2.8.1. Checking payment timeouts.
SL Sam Lee The recovery steps are in the checkout runbook.
Support — Maya Chen · #1842 INBOX / #1842 In progress
Invoice needs our company name
MC Maya Chen · Northstar Could you add Northstar Studio to invoice INV-1048? Our finance team needs it for reimbursement.
REPLY · DRAFT SAVED
Hi Maya, I found the invoice. I can update the billing name to Northstar Studio
Not sent
CUSTOMER RECORD
Northstar Studio
→ Contact: Maya Chen
→ Team plan · 24 seats
→ Billing email: finance@northstar.example
MATCHED TO THIS CUSTOMER
Invoice INV-1048
✓ Paid · September 1
→ Billing name: Maya Chen
→ Requested: Northstar Studio
Monitoring — payments-api Checkout errors Investigating · INC-42
Error rate
4.8%
payments-api
14:00 Deploy v2.8.1 · 14:12 14:20
POST /checkout Authorization timeoutsOn-call · Alex Rivera
Notion — checkout runbook INCIDENT INC-42
Checkout recovery
01 Compare errors with the last deploy
02 Check payment-provider health
03 Confirm rollback with the on-call lead
# inc-checkout
AR Alex Rivera Errors began after v2.8.1. Checking payment timeouts.
SL Sam Lee The recovery steps are in the checkout runbook.
#inc-checkout Checkout errors increased. Can you take a look? now Alex · #inc-checkout I have the incident. You can return to the inbox. now Workspaces
Maya · invoice request 3 windows Workspace Open Workspace ↵ Actions ⌘ K Workspaces
Checkout incident 3 windows Workspace Open Workspace ↵ Actions ⌘ K Workspaces
Maya · invoice request 3 windows Workspace Open Workspace ↵ Actions ⌘ K Desktop · 6 windows Maya · invoice request Checkout incident Maya · invoice request Thu 2:20 PM Thu 2:26 PM
linear.app/interface/team/product PRODUCT / SEPTEMBER
Workspace sharing
Sprint 24 · 5 issues · Board view
This sprint
AUTH-142
Reject expired sessions
Next
WS-91
Workspace permissions
Notion — sharing requirements PRODUCT BRIEF
Workspace sharing
→ Invite teammates by email
→ Owner and member permissions
→ Only allow active sessions into shared workspaces
# product
MC Maya Chen Sharing is next. Session security is the blocker.
AR Alex Rivera The session bug is AUTH-142.
linear.app/interface/issue/AUTH-142 Expired sessions still work AUTH-142
In progress Auth · security
maya commented
An expired session can still refresh. The endpoint should return 401.
auth
Terminal — auth regression test ✻ Terminal ~/app · session-fix
❯ npm test -- auth
✓ valid session refreshes
✗ expired session returns 200
expected status: 401
1 failing test · reproduced
❯
auth.ts
jwt.ts
auth.test.ts
1 import { verify, issue } from './jwt'
2 import { AuthError } from './errors'
3
4 export async function refresh (token: string ) {
5 const session = await verify (token)
6 return issue (session.userId, { ttl: '1h' })
7 }
8
9 // TODO: rotate refresh tokens (#142)
10 export function revoke (id: string ) {
11 return store. delete (id)
12 }
13
14 export const TTL = '1h'
linear.app/interface/team/product PRODUCT / SEPTEMBER
Workspace sharing
Sprint 24 · 5 issues · Board view
This sprint
AUTH-142
Reject expired sessions
Next
WS-91
Workspace permissions
Notion — sharing requirements PRODUCT BRIEF
Workspace sharing
→ Invite teammates by email
→ Owner and member permissions
→ Only allow active sessions into shared workspaces
# product
MC Maya Chen Sharing is next. Session security is the blocker.
AR Alex Rivera The session bug is AUTH-142.
linear.app/interface/issue/AUTH-142 Expired sessions still work AUTH-142
In progress Auth · security
maya commented
An expired session can still refresh. The endpoint should return 401.
auth
Terminal — auth regression test ✻ Terminal ~/app · session-fix
❯ npm test -- auth
✓ valid session refreshes
✗ expired session returns 200
expected status: 401
1 failing test · reproduced
❯
auth.ts
jwt.ts
auth.test.ts
1 import { verify, issue } from './jwt'
2 import { AuthError } from './errors'
3
4 export async function refresh (token: string ) {
5 const session = await verify (token)
6 return issue (session.userId, { ttl: '1h' })
7 }
8
9 // TODO: rotate refresh tokens (#142)
10 export function revoke (id: string ) {
11 return store. delete (id)
12 }
13
14 export const TTL = '1h'
Alex · #engineering AUTH-142 has a repro. Can you check the guard? now Sprint planning Back to the board and sharing brief now Workspaces
Sprint planning 3 windows Workspace Open Workspace ↵ Actions ⌘ K Workspaces
Session security 3 windows Workspace Open Workspace ↵ Actions ⌘ K Workspaces
Sprint planning 3 windows Workspace Open Workspace ↵ Actions ⌘ K Desktop · 6 windows Sprint planning Session security · AUTH-142 Sprint planning Fri 10:42 AM Fri 10:50 AM
Focus on your work.Interface keeps track of the rest. Private beta for macOS. Opens an email request.