From d74ce994e68d521142cb551604182b3cadf3850d Mon Sep 17 00:00:00 2001 From: buttercode101 Date: Tue, 27 Oct 2026 09:03:24 +0200 Subject: [PATCH 1/7] Extend recording capacity and rebuild the recording workspace --- README.md | 4 +- android/app/build.gradle | 2 +- .../com/buttercode/mobile/LaunchTest.java | 2 +- .../buttercode/mobile/ScreenNoteActivity.java | 10 ++- .../mobile/ScreenRecordingService.java | 8 +- api/clip.js | 7 +- lib/import-media.js | 4 +- lib/library.js | 7 ++ lib/recording-policy.js | 20 +++++ lib/rules.js | 7 +- lib/transfer.js | 2 +- package-lock.json | 4 +- package.json | 2 +- public/app.js | 85 ++++++++++++++---- public/capture.js | 15 ++-- public/privacy.html | 4 +- public/sample.webm | Bin 348711 -> 390210 bytes public/style.css | 14 ++- scripts/generate-sample.py | 25 ++++++ scripts/live-smoke.mjs | 5 +- .../functions/screennote-store/gateway.js | 6 +- ...7070052_screennote_larger_shared_clips.sql | 3 + tests/api.test.js | 15 +++- tests/capacity.test.js | 6 +- tests/capture.test.js | 3 + tests/media-validation.test.js | 2 +- tests/recording-policy.test.js | 25 ++++++ tests/rules.test.js | 4 +- tests/supabase-store.test.js | 2 +- tests/ui/fixture.js | 1 + vercel.json | 2 +- 31 files changed, 231 insertions(+), 65 deletions(-) create mode 100644 lib/library.js create mode 100644 lib/recording-policy.js create mode 100644 scripts/generate-sample.py create mode 100644 supabase/migrations/20261027070052_screennote_larger_shared_clips.sql create mode 100644 tests/recording-policy.test.js diff --git a/README.md b/README.md index 73038e3..b09509f 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,9 @@ ScreenNote lets you record or import a short explanation, review it privately, a ## Limits that matter -Clips are limited to five minutes and 25 MiB. Shared storage uses a 1,000,000,000-byte budget with temporary upload reservations; there is no fixed 16-slot cap. Available clip count depends on sizes, active reservations and provider quotas. Each clip allows up to 100 comments. Names are unverified; owner and author controls depend on private browser capabilities. +Clips are limited to ten minutes and 50 MB. Shared storage uses a 1,000,000,000-byte budget with temporary upload reservations; there is no fixed 16-slot cap. Available clip count depends on sizes, active reservations and provider quotas. Each clip allows up to 100 comments. Names are unverified; owner and author controls depend on private browser capabilities. -Local recordings are browser data, not a backup. Recovery-key files restore management capabilities, not video files. Issued media URLs may continue working for five minutes after sharing stops. Playback bubbles do not appear in native fullscreen or picture-in-picture. Phones without browser screen capture can import a device recording. +Local recordings are browser data, not a backup. Recovery-key files restore management capabilities, not video files. Issued media URLs may continue working for ten minutes after sharing stops. Playback bubbles do not appear in native fullscreen or picture-in-picture. Phones without browser screen capture can import a device recording. ## Quick start diff --git a/android/app/build.gradle b/android/app/build.gradle index d3f6e6e..91a81da 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -2,7 +2,7 @@ plugins { id 'com.android.application' } android { namespace 'com.buttercode.mobile' compileSdk 36 - defaultConfig { applicationId 'za.co.buttercode.screennote'; minSdk 26; targetSdk 36; versionCode 2; versionName '0.1.1-internal'; testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' + defaultConfig { applicationId 'za.co.buttercode.screennote'; minSdk 26; targetSdk 36; versionCode 4; versionName '0.5.0-internal'; testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' buildConfigField 'String','APP_ORIGIN','"https://screennote-woad.vercel.app"' buildConfigField 'boolean','SCREEN_CAPTURE','true' buildConfigField 'boolean','BUNDLED_OFFLINE','false' diff --git a/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java b/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java index f1f5c4b..99fad09 100644 --- a/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java +++ b/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java @@ -59,7 +59,7 @@ private void saveScreenshot(ActivityScenario scenario,Context cont nativeText("Refresh page",true);nativeText("Refresh this page?",false);nativeText("Keep editing",true); ready(scenario); if(BuildConfig.SCREEN_CAPTURE){ - js(scenario,"document.querySelector('[data-android-action=recordScreen]').click()");nativeText("Record your screen",false);nativeText("Cancel",true); + js(scenario,"document.querySelector('[data-android-action=recordScreen]').click()");nativeText("Recording quality",false);nativeText("Continue",true);nativeText("Record your screen",false);nativeText("Cancel",true); assertEquals("true",js(scenario,"!!document.querySelector('[data-android-capture]')")); } } diff --git a/android/app/src/main/java/com/buttercode/mobile/ScreenNoteActivity.java b/android/app/src/main/java/com/buttercode/mobile/ScreenNoteActivity.java index 514b040..7c41884 100644 --- a/android/app/src/main/java/com/buttercode/mobile/ScreenNoteActivity.java +++ b/android/app/src/main/java/com/buttercode/mobile/ScreenNoteActivity.java @@ -1,14 +1,16 @@ package com.buttercode.mobile; import android.Manifest;import android.app.*;import android.os.*;import android.content.*;import android.content.pm.PackageManager;import android.media.*;import android.media.projection.*;import android.net.Uri;import android.widget.*;import androidx.core.content.FileProvider;import java.io.*;import java.util.*; public class ScreenNoteActivity extends MainActivity { - private boolean mic;private static final int AUDIO=81,SCREEN=82,NOTIFICATIONS=83; + private boolean mic;private String quality="balanced";private static final int AUDIO=81,SCREEN=82,NOTIFICATIONS=83; @Override protected void chooseRecording(){if(ScreenRecordingService.active){dialog().setTitle("Recording in progress").setMessage("Stop and save your recording?").setPositiveButton("Stop recording",(d,w)->startService(new Intent(this,ScreenRecordingService.class).setAction(ScreenRecordingService.STOP))).setNegativeButton("Keep recording",null).show();return;} - dialog().setTitle("Record your screen").setMessage("Android will ask which screen or app to share. Recordings stay on this device until you publish. Up to 5 minutes / 25 MB. System audio and a camera bubble are not included in this first Android recorder.").setPositiveButton("Screen + microphone",(d,w)->{mic=true;if(checkSelfPermission(Manifest.permission.RECORD_AUDIO)!=PackageManager.PERMISSION_GRANTED)requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO},AUDIO);else requestScreen();}).setNeutralButton("Screen only",(d,w)->{mic=false;requestScreen();}).setNegativeButton("Cancel",null).show(); + dialog().setTitle("Recording quality").setSingleChoiceItems(new String[]{"Data saver · smaller files","Balanced · everyday walkthroughs","Clear text · larger files"},1,(d,w)->quality=new String[]{"saver","balanced","clear"}[w]).setPositiveButton("Continue",(d,w)->chooseRecordingAudio()).setNegativeButton("Cancel",null).show(); + } + private void chooseRecordingAudio(){dialog().setTitle("Record your screen").setMessage("Android will ask which screen or app to share. Recordings stay on this device until you publish. Local: up to 30 minutes / 250 MB. Shared clips: up to 10 minutes / 50 MB. System audio and a camera bubble are not included in this first Android recorder.").setPositiveButton("Screen + microphone",(d,w)->{mic=true;if(checkSelfPermission(Manifest.permission.RECORD_AUDIO)!=PackageManager.PERMISSION_GRANTED)requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO},AUDIO);else requestScreen();}).setNeutralButton("Screen only",(d,w)->{mic=false;requestScreen();}).setNegativeButton("Cancel",null).show(); } private void requestScreen(){if(Build.VERSION.SDK_INT>=33&&checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS)!=PackageManager.PERMISSION_GRANTED&&!getSharedPreferences("capture",MODE_PRIVATE).getBoolean("notificationsAsked",false)){getSharedPreferences("capture",MODE_PRIVATE).edit().putBoolean("notificationsAsked",true).apply();requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS},NOTIFICATIONS);return;}startActivityForResult(getSystemService(MediaProjectionManager.class).createScreenCaptureIntent(),SCREEN);} @Override public void onRequestPermissionsResult(int code,String[] names,int[] results){super.onRequestPermissionsResult(code,names,results);if(code==NOTIFICATIONS){requestScreen();return;}if(code==AUDIO&&results.length>0&&results[0]==PackageManager.PERMISSION_GRANTED)requestScreen();else if(code==AUDIO)Toast.makeText(this,"Microphone permission declined. You can choose Screen only.",Toast.LENGTH_LONG).show();} - @Override protected void onActivityResult(int code,int result,Intent data){super.onActivityResult(code,result,data);if(code==SCREEN&&result==RESULT_OK&&data!=null){Intent start=new Intent(this,ScreenRecordingService.class).putExtra("result",result).putExtra("consent",data).putExtra("microphone",mic);startForegroundService(start);Toast.makeText(this,"Recording starts now. Use the recording notification or Record screen to stop.",Toast.LENGTH_LONG).show();}} - @Override protected void onResume(){super.onResume();String error=getSharedPreferences("capture",MODE_PRIVATE).getString("error",null);if(error!=null){getSharedPreferences("capture",MODE_PRIVATE).edit().remove("error").apply();Toast.makeText(this,error,Toast.LENGTH_LONG).show();}} + @Override protected void onActivityResult(int code,int result,Intent data){super.onActivityResult(code,result,data);if(code==SCREEN&&result==RESULT_OK&&data!=null){Intent start=new Intent(this,ScreenRecordingService.class).putExtra("result",result).putExtra("consent",data).putExtra("microphone",mic).putExtra("quality",quality);startForegroundService(start);Toast.makeText(this,"Recording starts now. Use the recording notification or Record screen to stop.",Toast.LENGTH_LONG).show();}} + @Override protected void onResume(){super.onResume();String notice=getSharedPreferences("capture",MODE_PRIVATE).getString("notice",null);if(notice!=null){getSharedPreferences("capture",MODE_PRIVATE).edit().remove("notice").apply();Toast.makeText(this,notice,Toast.LENGTH_LONG).show();}String error=getSharedPreferences("capture",MODE_PRIVATE).getString("error",null);if(error!=null){getSharedPreferences("capture",MODE_PRIVATE).edit().remove("error").apply();Toast.makeText(this,error,Toast.LENGTH_LONG).show();}} @Override protected void recordings(){File dir=new File(getFilesDir(),"recordings");File[] values=dir.listFiles((d,n)->n.endsWith(".mp4")&&OriginPolicy.recordingId(n.substring(0,n.length()-4))&&!n.equals(ScreenRecordingService.activeFileName));if(values==null||values.length==0){Toast.makeText(this,"No native recordings yet. Stop a recording to save it here.",Toast.LENGTH_LONG).show();return;}Arrays.sort(values,(a,b)->Long.compare(b.lastModified(),a.lastModified()));String[] labels=Arrays.stream(values).map(f->new java.text.SimpleDateFormat("dd MMM HH:mm",Locale.getDefault()).format(new Date(f.lastModified()))+" · "+String.format(Locale.getDefault(),"%.1f MB",f.length()/1000000.0)).toArray(String[]::new);dialog().setTitle("Recordings on this device").setItems(labels,(d,n)->openRecording(values[n])).setNegativeButton("Close",null).show();} private void openRecording(File file){dialog().setTitle("Your recording").setItems(new String[]{"Review and share in ScreenNote","Play recording","Share original MP4","Delete recording"},(d,n)->{String id=file.getName().substring(0,file.getName().length()-4);Uri uri=FileProvider.getUriForFile(this,BuildConfig.APPLICATION_ID+".files",file);if(n==0)web.loadUrl(BuildConfig.APP_ORIGIN+"/?nativeRecording="+id);else if(n==3)dialog().setMessage("Permanently delete this native recording? Imported copies and published videos are separate.").setPositiveButton("Delete",(a,b)->{if(!file.delete())Toast.makeText(this,"The recording could not be deleted.",Toast.LENGTH_LONG).show();}).setNegativeButton("Keep recording",null).show();else try{Intent intent=n==1?new Intent(Intent.ACTION_VIEW).setDataAndType(uri,"video/mp4"):new Intent(Intent.ACTION_SEND).setType("video/mp4").putExtra(Intent.EXTRA_STREAM,uri);intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);startActivity(n==1?intent:Intent.createChooser(intent,"Share recording"));}catch(ActivityNotFoundException e){Toast.makeText(this,"No app can open this video.",Toast.LENGTH_LONG).show();}}).show();} } diff --git a/android/app/src/main/java/com/buttercode/mobile/ScreenRecordingService.java b/android/app/src/main/java/com/buttercode/mobile/ScreenRecordingService.java index 706b1a0..054c015 100644 --- a/android/app/src/main/java/com/buttercode/mobile/ScreenRecordingService.java +++ b/android/app/src/main/java/com/buttercode/mobile/ScreenRecordingService.java @@ -8,19 +8,19 @@ public class ScreenRecordingService extends Service { @Override public IBinder onBind(Intent intent){return null;} @Override public int onStartCommand(Intent intent,int flags,int startId){ if(intent==null||STOP.equals(intent.getAction())){finish();return START_NOT_STICKY;}if(active)return START_NOT_STICKY; - boolean mic=intent.getBooleanExtra("microphone",false);Intent consent=Build.VERSION.SDK_INT>=33?intent.getParcelableExtra("consent",Intent.class):intent.getParcelableExtra("consent");int result=intent.getIntExtra("result",Activity.RESULT_CANCELED); + boolean mic=intent.getBooleanExtra("microphone",false);String quality=intent.getStringExtra("quality");Intent consent=Build.VERSION.SDK_INT>=33?intent.getParcelableExtra("consent",Intent.class):intent.getParcelableExtra("consent");int result=intent.getIntExtra("result",Activity.RESULT_CANCELED); if(consent==null||result!=Activity.RESULT_OK){stopSelf();return START_NOT_STICKY;} try{ NotificationManager nm=getSystemService(NotificationManager.class);nm.createNotificationChannel(new NotificationChannel("recording","Screen recording",NotificationManager.IMPORTANCE_LOW)); PendingIntent stop=PendingIntent.getService(this,1,new Intent(this,ScreenRecordingService.class).setAction(STOP),PendingIntent.FLAG_UPDATE_CURRENT|PendingIntent.FLAG_IMMUTABLE); PendingIntent open=PendingIntent.getActivity(this,2,new Intent(this,ScreenNoteActivity.class),PendingIntent.FLAG_UPDATE_CURRENT|PendingIntent.FLAG_IMMUTABLE); - Notification notice=new Notification.Builder(this,"recording").setContentTitle("ScreenNote is recording").setContentText("Tap Stop when you have finished. Up to 5 minutes / 25 MB.").setSmallIcon(android.R.drawable.presence_video_online).setOngoing(true).setContentIntent(open).addAction(new Notification.Action.Builder(null,"Stop recording",stop).build()).build(); + Notification notice=new Notification.Builder(this,"recording").setContentTitle("ScreenNote is recording").setContentText("Tap Stop when you have finished. Local recording: up to 30 minutes / 250 MB.").setSmallIcon(android.R.drawable.presence_video_online).setOngoing(true).setContentIntent(open).addAction(new Notification.Action.Builder(null,"Stop recording",stop).build()).build(); int types=0;if(Build.VERSION.SDK_INT>=29)types=ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION;if(mic&&Build.VERSION.SDK_INT>=30)types|=ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE; if(Build.VERSION.SDK_INT>=29)startForeground(40,notice,types);else startForeground(40,notice); MediaProjectionManager manager=getSystemService(MediaProjectionManager.class);projection=manager.getMediaProjection(result,consent);projection.registerCallback(new MediaProjection.Callback(){@Override public void onStop(){finish();}},new Handler(getMainLooper())); File folder=new File(getFilesDir(),"recordings");folder.mkdirs();output=new File(folder,UUID.randomUUID()+".mp4");activeFileName=output.getName(); - Point size=new Point();((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getRealSize(size);float scale=Math.min(1f,1280f/Math.max(size.x,size.y));int width=Math.max(2,Math.round(size.x*scale)/2*2),height=Math.max(2,Math.round(size.y*scale)/2*2); - recorder=Build.VERSION.SDK_INT>=31?new MediaRecorder(this):new MediaRecorder();if(mic)recorder.setAudioSource(MediaRecorder.AudioSource.MIC);recorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);recorder.setVideoSize(width,height);recorder.setVideoFrameRate(24);recorder.setVideoEncodingBitRate(1000000);if(mic){recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);recorder.setAudioEncodingBitRate(64000);recorder.setAudioSamplingRate(44100);}recorder.setOutputFile(output.getAbsolutePath());recorder.setMaxDuration(300000);recorder.setMaxFileSize(25L*1024*1024-65536);recorder.setOnInfoListener((r,what,extra)->{if(what==MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED||what==MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED)finish();});recorder.setOnErrorListener((r,what,extra)->finish());recorder.prepare(); + Point size=new Point();((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getRealSize(size);float longest="clear".equals(quality)?1920f:"saver".equals(quality)?960f:1280f;float scale=Math.min(1f,longest/Math.max(size.x,size.y));int width=Math.max(2,Math.round(size.x*scale)/2*2),height=Math.max(2,Math.round(size.y*scale)/2*2); + recorder=Build.VERSION.SDK_INT>=31?new MediaRecorder(this):new MediaRecorder();if(mic)recorder.setAudioSource(MediaRecorder.AudioSource.MIC);recorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);recorder.setVideoSize(width,height);recorder.setVideoFrameRate("saver".equals(quality)?15:24);recorder.setVideoEncodingBitRate("clear".equals(quality)?1600000:"saver".equals(quality)?350000:600000);if(mic){recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);recorder.setAudioEncodingBitRate(64000);recorder.setAudioSamplingRate(44100);}recorder.setOutputFile(output.getAbsolutePath());recorder.setMaxDuration(1800000);recorder.setMaxFileSize(250000000L-65536);recorder.setOnInfoListener((r,what,extra)->{if(what==MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED||what==MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED){getSharedPreferences("capture",MODE_PRIVATE).edit().putString("notice",what==MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED?"Saved: the 30-minute local recording limit was reached.":"Saved: the 250 MB local recording limit was reached.").apply();finish();}});recorder.setOnErrorListener((r,what,extra)->finish());recorder.prepare(); display=projection.createVirtualDisplay("ScreenNote",width,height,getResources().getDisplayMetrics().densityDpi,DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,recorder.getSurface(),null,null);recorder.start();recording=true;active=true; }catch(Exception e){finish();getSharedPreferences("capture",MODE_PRIVATE).edit().putString("error","Recording could not start. Try again with a fresh screen-sharing permission.").apply();} return START_NOT_STICKY; diff --git a/api/clip.js b/api/clip.js index 172f58d..7dfb56d 100644 --- a/api/clip.js +++ b/api/clip.js @@ -1,3 +1,4 @@ +import {REVIEW_STATES} from '../lib/library.js'; import {applyCommentAction,commentOperations} from '../lib/comment-actions.js'; import {defaultCapacityLimits,capacitySummary,hasCapacity,reserveCapacity,releaseCapacity,finalizeCapacity} from '../lib/capacity.js'; import {validTitle} from '../lib/titles.js'; @@ -7,7 +8,7 @@ import {validateExtras} from '../lib/enrichment.js'; import {RETENTION_GRACE,reclaimable} from '../lib/retention.js'; import{createHash,timingSafeEqual}from'node:crypto'; import{handleUpload}from'@vercel/blob/client'; -import{CHUNK_BYTES,MAX_BYTES,MAX_SHARED,validId,clipInput,publicClip,isVideo}from'../lib/rules.js'; +import{CHUNK_BYTES,MAX_BYTES,MAX_SECONDS,MAX_SHARED,validId,clipInput,publicClip,isVideo}from'../lib/rules.js'; import{configured,key,media,read,write,mutate,mediaInfo,mediaMagic,mediaURL,removeMedia,uploadSmall,uploadPart,assemble,clearParts,uploadedParts}from'../lib/store.js'; export const config={maxDuration:60}; const hash=v=>createHash('sha256').update(v).digest('hex'); @@ -36,14 +37,14 @@ async function recoverCapacity(requiredBytes){ } } async function viewerAccess(c,password){available(c);if(!c.passwordHash)return;if((c.passwordLockedUntil||0)>Date.now())throw fail('Too many password attempts. Try again in one minute.',429);if(!await checkPassword(c,password)){if(password)await mutate(key(c.id),d=>{d.passwordFailures=(d.passwordFailures||0)+1;if(d.passwordFailures>=8){d.passwordLockedUntil=Date.now()+60000;d.passwordFailures=0}});throw Object.assign(fail('This video needs its sharing password.',401),{code:'PASSWORD_REQUIRED'})}} -async function find(id){if(!validId(id))throw fail('Clip not found.',404);const r=await read(key(id));if(!r)throw fail('Clip not found. Older links may need to be republished from their original local video after the storage migration.',404);return r.data};return async function handler(req,res){res.setHeader('Cache-Control','no-store');res.setHeader('X-Content-Type-Options','nosniff');try{const op=req.query?.op||new URL(req.url,'http://localhost').searchParams.get('op'),id=req.query?.id||new URL(req.url,'http://localhost').searchParams.get('id');if(req.method==='GET'&&op==='health'){const ready=configured();const capacity=ready?await currentCapacity():{ids:[]};return res.status(200).json({configured:ready,maxBytes:MAX_BYTES,maxSeconds:300,...capacitySummary(capacity,limits)})}if(!configured())throw fail('Sharing is not configured yet. Your local recording is safe; download it or try again later.',503); +async function find(id){if(!validId(id))throw fail('Clip not found.',404);const r=await read(key(id));if(!r)throw fail('Clip not found. Older links may need to be republished from their original local video after the storage migration.',404);return r.data};return async function handler(req,res){res.setHeader('Cache-Control','no-store');res.setHeader('X-Content-Type-Options','nosniff');try{const op=req.query?.op||new URL(req.url,'http://localhost').searchParams.get('op'),id=req.query?.id||new URL(req.url,'http://localhost').searchParams.get('id');if(req.method==='GET'&&op==='health'){const ready=configured();const capacity=ready?await currentCapacity():{ids:[]};return res.status(200).json({configured:ready,maxBytes:MAX_BYTES,maxSeconds:MAX_SECONDS,...capacitySummary(capacity,limits)})}if(!configured())throw fail('Sharing is not configured yet. Your local recording is safe; download it or try again later.',503); if(req.method==='GET'){if(op!=='view')throw fail('Unknown action.');const c=await find(id);await viewerAccess(c);return res.status(200).json({...publicClip(c),mediaUrl:await mediaURL(id)})} if(req.method!=='POST'){res.setHeader('Allow','GET, POST');throw fail('Method not allowed.',405)} const origin=req.headers.origin;if(origin&&new URL(origin).host!==req.headers.host)throw fail('Use the ScreenNote page to make this request.',403); let body=req.body;if(typeof body==='string')body=JSON.parse(body);if(!body||typeof body!=='object'||Array.isArray(body)||JSON.stringify(body).length>(['upload-small','upload-chunk'].includes(op)?4200000:40000))throw fail('Request is too large.'); if(op==='upload'){const result=await uploader({body,request:req,onBeforeGenerateToken:async(path,payload)=>{const p=JSON.parse(payload||'{}'),c=await find(p.id);owner(c,p.owner);if(c.status!=='pending'||(c.uploadUntil||c.createdAt+600000){}});return res.status(200).json(result)} if(op==='reserve'){const input=clipInput(body);if(!validId(body.id)||typeof body.owner!=='string'||body.owner.length<40||body.owner.length>100)throw fail('Invalid recording identity.');const existing=await read(key(body.id));if(existing){owner(existing.data,body.owner);if(body.password&&(!existing.data.passwordHash||!await checkPassword(existing.data,body.password)))throw fail('Use the original sharing password for this upload. Delete the upload first to change its protection.');if(!['pending','published'].includes(existing.data.status))throw fail('This clip is no longer publishable. Create a new share link.',409);if(existing.data.size!==input.size||existing.data.type!==input.type||existing.data.duration!==input.duration)throw fail('This upload does not match its reservation.',409);if(existing.data.status==='pending')await mutate(key(body.id),d=>{owner(d,body.owner);if(d.status!=='pending')throw fail('This clip changed. Try again.',409);Object.assign(d,input);d.uploadUntil=Date.now()+600000});return res.status(200).json({id:body.id,status:existing.data.status})}const credentials=await passwordRecord(body.password);await recoverCapacity(2*input.size);await mutate('screennote/capacity.json',d=>reserveCapacity(d,body.id,input.size,limits),()=>({ids:[],allocations:{}}));const c={...input,...credentials,id:body.id,ownerHash:hash(body.owner),createdAt:Date.now(),uploadUntil:Date.now()+600000,expiresAt:Date.now()+7*86400000,status:'pending',comments:[],votes:{}};try{await write(key(c.id),c)}catch(e){const saved=await read(key(c.id));if(!saved)await releaseSlot(c.id);else{owner(saved.data,body.owner);return res.status(200).json({id:c.id,status:saved.data.status})}throw e}return res.status(201).json({id:c.id,status:c.status})} -const c=await find(body.id);if(op==='upload-state'){owner(c,body.owner);if(c.status!=='pending')return res.status(200).json({parts:[]});return res.status(200).json({parts:uploadedParts?await uploadedParts(c):[]})}if(op==='view'){await viewerAccess(c,body.accessPassword);return res.status(200).json({...publicClip(c),mediaUrl:await mediaURL(c.id)})}if(op==='title'){owner(c,body.owner);const title=validTitle(body.title);await mutate(key(c.id),d=>{owner(d,body.owner);d.title=title});return res.status(200).json({title})}if(op==='details'){owner(c,body.owner);const extras=validateExtras(body,c.duration);await mutate(key(c.id),d=>{owner(d,body.owner);Object.assign(d,extras)});return res.status(200).json(extras)}if(op==='manage'){owner(c,body.owner);return res.status(200).json({...publicClip(c),type:c.type,size:c.size,status:c.status,cleanupComplete:!!c.cleanupComplete})}if(op==='upload-chunk'){owner(c,body.owner);if(c.status!=='pending'||(c.uploadUntil||c.createdAt+600000)=count||typeof body.data!=='string'||body.data.length>2800000)throw fail('Invalid upload part.');const bytes=Buffer.from(body.data,'base64'),expected=Math.min(CHUNK_BYTES,c.size-part*CHUNK_BYTES);if(bytes.length!==expected||bytes.toString('base64')!==body.data||part===0&&!isVideo(bytes,c.type))throw fail('The upload part does not match this video.');try{await uploadPart(c.id,part,bytes)}catch(e){if(!/already exists/i.test(e.message))throw e}return res.status(200).json({part,uploaded:true})}if(op==='upload-small'){owner(c,body.owner);if(c.status!=='pending'||(c.uploadUntil||c.createdAt+600000)4194304)throw fail('This transfer supports files up to 3 MB.');const bytes=Buffer.from(body.data,'base64');if(bytes.length>3145728||bytes.length!==c.size||bytes.toString('base64')!==body.data||!isVideo(bytes,c.type))throw fail('The upload does not match the video.');try{await uploadSmall(c.id,bytes,c.type)}catch(e){if(!/already exists/i.test(e.message))throw e;const info=await mediaInfo(c.id);if(info.size!==c.size||!info.contentType.startsWith(c.type))throw fail('This upload does not match its reservation.')}return res.status(200).json({uploaded:true})}if(op==='publish'){owner(c,body.owner);if(c.status==='published'){try{await finishUpload(c)}catch{}return res.status(200).json(publicClip(c))}if(c.status!=='pending')throw fail('This clip is no longer publishable.');if((c.uploadUntil||c.createdAt+600000)MAX_BYTES||info.size!==c.size||!info.contentType.startsWith(c.type)||!isVideo(await mediaMagic(c.id),c.type))throw fail('The uploaded file does not match the video. Keep your local copy and try another file.');const verified=await inspect(await mediaURL(c.id),c);const result=await mutate(key(c.id),d=>{owner(d,body.owner);Object.assign(d,{width:verified.width,height:verified.height});if(d.status!=='pending'&&d.status!=='published')throw fail('This clip is unavailable.');if(d.status==='pending')d.expiresAt=Date.now()+(d.linkDays||7)*86400000;d.status='published';return publicClip(d)});try{await finishUpload({...c,...result})}catch{}return res.status(200).json(result)} +const c=await find(body.id);if(op==='upload-state'){owner(c,body.owner);if(c.status!=='pending')return res.status(200).json({parts:[]});return res.status(200).json({parts:uploadedParts?await uploadedParts(c):[]})}if(op==='view'){await viewerAccess(c,body.accessPassword);return res.status(200).json({...publicClip(c),mediaUrl:await mediaURL(c.id)})}if(op==='restore-media'){owner(c,body.owner);available(c);return res.status(200).json({mediaUrl:await mediaURL(c.id)})}if(op==='review-status'){owner(c,body.owner);if(!REVIEW_STATES.includes(body.reviewStatus))throw fail('Choose a valid review status.');await mutate(key(c.id),d=>{owner(d,body.owner);d.reviewStatus=body.reviewStatus});return res.status(200).json({reviewStatus:body.reviewStatus})}if(op==='title'){owner(c,body.owner);const title=validTitle(body.title);await mutate(key(c.id),d=>{owner(d,body.owner);d.title=title});return res.status(200).json({title})}if(op==='details'){owner(c,body.owner);const extras=validateExtras(body,c.duration);await mutate(key(c.id),d=>{owner(d,body.owner);Object.assign(d,extras)});return res.status(200).json(extras)}if(op==='manage'){owner(c,body.owner);return res.status(200).json({...publicClip(c),type:c.type,size:c.size,status:c.status,cleanupComplete:!!c.cleanupComplete})}if(op==='upload-chunk'){owner(c,body.owner);if(c.status!=='pending'||(c.uploadUntil||c.createdAt+600000)=count||typeof body.data!=='string'||body.data.length>2800000)throw fail('Invalid upload part.');const bytes=Buffer.from(body.data,'base64'),expected=Math.min(CHUNK_BYTES,c.size-part*CHUNK_BYTES);if(bytes.length!==expected||bytes.toString('base64')!==body.data||part===0&&!isVideo(bytes,c.type))throw fail('The upload part does not match this video.');try{await uploadPart(c.id,part,bytes)}catch(e){if(!/already exists/i.test(e.message))throw e}return res.status(200).json({part,uploaded:true})}if(op==='upload-small'){owner(c,body.owner);if(c.status!=='pending'||(c.uploadUntil||c.createdAt+600000)4194304)throw fail('This transfer supports files up to 3 MB.');const bytes=Buffer.from(body.data,'base64');if(bytes.length>3145728||bytes.length!==c.size||bytes.toString('base64')!==body.data||!isVideo(bytes,c.type))throw fail('The upload does not match the video.');try{await uploadSmall(c.id,bytes,c.type)}catch(e){if(!/already exists/i.test(e.message))throw e;const info=await mediaInfo(c.id);if(info.size!==c.size||!info.contentType.startsWith(c.type))throw fail('This upload does not match its reservation.')}return res.status(200).json({uploaded:true})}if(op==='publish'){owner(c,body.owner);if(c.status==='published'){try{await finishUpload(c)}catch{}return res.status(200).json(publicClip(c))}if(c.status!=='pending')throw fail('This clip is no longer publishable.');if((c.uploadUntil||c.createdAt+600000)MAX_BYTES||info.size!==c.size||!info.contentType.startsWith(c.type)||!isVideo(await mediaMagic(c.id),c.type))throw fail('The uploaded file does not match the video. Keep your local copy and try another file.');const verified=await inspect(await mediaURL(c.id),c);const result=await mutate(key(c.id),d=>{owner(d,body.owner);Object.assign(d,{width:verified.width,height:verified.height});if(d.status!=='pending'&&d.status!=='published')throw fail('This clip is unavailable.');if(d.status==='pending')d.expiresAt=Date.now()+(d.linkDays||7)*86400000;d.status='published';return publicClip(d)});try{await finishUpload({...c,...result})}catch{}return res.status(200).json(result)} if(op==='revoke'){owner(c,body.owner);await mutate(key(c.id),d=>{owner(d,body.owner);d.status='revoked'});return res.status(200).json({revoked:true})} if(op==='delete'){owner(c,body.owner);await mutate(key(c.id),d=>{owner(d,body.owner);d.status='deleted'});await mutate('screennote/capacity.json',d=>{if(d.ids.includes(c.id))(d.deadlines||={})[c.id]=0},()=>({ids:[]}));await cleanup(c);return res.status(200).json({deleted:true})} await viewerAccess(c,body.accessPassword);if(!validId(body.viewer))throw fail('Refresh this page before replying.');if(commentOperations.includes(op)){const result=await mutate(key(c.id),d=>{try{return applyCommentAction(d,op,body)}catch(e){e.status??=400;throw e}});return res.status(200).json(result)} diff --git a/lib/import-media.js b/lib/import-media.js index 729df85..fe51bad 100644 --- a/lib/import-media.js +++ b/lib/import-media.js @@ -1,8 +1,8 @@ -import {MAX_BYTES,isVideo} from './rules.js'; +import {LOCAL_MAX_BYTES,isVideo} from './rules.js'; // Some device file providers omit MIME or use application/octet-stream. // Infer only supported extensions, verify their container header, then let the browser decode. export async function importMedia(file){ - if(file.size>MAX_BYTES)throw Error('Choose a video smaller than 25 MB. Your file has not been uploaded.'); + if(file.size>LOCAL_MAX_BYTES)throw Error('Choose a video up to 250 MB for local editing. Your file has not been uploaded.'); const declared=String(file.type||'').split(';')[0].toLowerCase(); const type=['video/mp4','video/webm'].includes(declared)?declared:(!declared||declared==='application/octet-stream')?(/\.mp4$/i.test(file.name)?'video/mp4':/\.webm$/i.test(file.name)?'video/webm':''):''; if(!type)throw Error('Choose an MP4 or WebM video.'); diff --git a/lib/library.js b/lib/library.js new file mode 100644 index 0000000..07098bd --- /dev/null +++ b/lib/library.js @@ -0,0 +1,7 @@ +export const REVIEW_STATES=['needs-feedback','changes-requested','approved']; +export const reviewLabel=s=>({'needs-feedback':'Needs feedback','changes-requested':'Changes requested',approved:'Approved'}[s]||'Needs feedback'); +export function filterRecordings(clips,{query='',status='all',sort='newest'}={}){ + const q=query.trim().toLocaleLowerCase(); + const result=clips.filter(c=>(!q||String(c.title).toLocaleLowerCase().includes(q))&&(status==='all'||status==='shared'&&c.shared&&!c.revoked&&!c.cloudDeleted&&c.expiresAt>Date.now()||status==='local'&&!!c.blob&&(!c.shared||c.revoked||c.cloudDeleted||c.expiresAt<=Date.now())||status===(c.reviewStatus||'needs-feedback'))); + return result.sort((a,b)=>sort==='title'?String(a.title).localeCompare(String(b.title)):sort==='oldest'?a.createdAt-b.createdAt:b.createdAt-a.createdAt); +} diff --git a/lib/recording-policy.js b/lib/recording-policy.js new file mode 100644 index 0000000..b6fd1ba --- /dev/null +++ b/lib/recording-policy.js @@ -0,0 +1,20 @@ +import {MAX_BYTES,MAX_SECONDS,LOCAL_MAX_BYTES,LOCAL_MAX_SECONDS} from './rules.js'; +export const PROFILES = { + saver: {label:'Data saver',width:960,fps:15,video:350000,audio:48000}, + balanced: {label:'Balanced',width:1280,fps:24,video:600000,audio:64000}, + clear: {label:'Clear text',width:1920,fps:24,video:1600000,audio:64000} +}; +export const profileFor = name => PROFILES[name] || PROFILES.balanced; +export function recordingStats(bytes,seconds,profile='balanced') { + const rate=seconds>2&&bytes>0?bytes/seconds:(profileFor(profile).video+profileFor(profile).audio)/8; + return {bytes,seconds,remaining:Math.max(0,Math.min(LOCAL_MAX_SECONDS-seconds,(LOCAL_MAX_BYTES-bytes)/rate)), + shareRemaining:Math.max(0,Math.min(MAX_SECONDS-seconds,(MAX_BYTES-bytes)/rate)), + shareable:bytes<=MAX_BYTES&&seconds<=MAX_SECONDS,rate}; +} +export function sharingProblem(clip) { + const size=clip.blob?.size??clip.size??0; + if(clip.duration>MAX_SECONDS)return 'This video is longer than 10 minutes. Trim a shorter copy to share; your original stays here.'; + if(size>MAX_BYTES)return 'This video is larger than 50 MB. Make a smaller copy to share; your original stays here.'; + return ''; +} +export const stopMessage = reason => ({size:'Saved: the 250 MB local recording limit was reached.',duration:'Saved: the 30-minute local recording limit was reached.',source:'Saved: screen sharing ended.',error:'Recording stopped unexpectedly. The captured video is saved.',user:'Recording saved.'}[reason]||'Recording saved.'); diff --git a/lib/rules.js b/lib/rules.js index 7c36f22..dcc618f 100644 --- a/lib/rules.js +++ b/lib/rules.js @@ -1,11 +1,12 @@ +import {REVIEW_STATES} from './library.js'; import {validateExtras} from './enrichment.js'; -export const MAX_BYTES=25*1024*1024,MAX_SECONDS=300,MAX_SHARED=10000,STORAGE_BUDGET_BYTES=1_000_000_000; +export const MAX_BYTES=50_000_000,MAX_SECONDS=600,LOCAL_MAX_BYTES=250_000_000,LOCAL_MAX_SECONDS=1800,MAX_SHARED=10000,STORAGE_BUDGET_BYTES=1_000_000_000; export const TYPES=['video/webm','video/mp4']; export const validId=v=>typeof v==='string'&&/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/.test(v); export function text(v,max,required=false){if(typeof v!=='string'||v.trim().length>max||required&&!v.trim())throw Error('Please check the text fields.');return v.trim()} -export function clipInput(v){const title=text(v.title,100,true),type=TYPES.find(t=>String(v.type).split(';')[0].trim()===t);if(!type||!Number.isFinite(v.duration)||v.duration<=0||v.duration>MAX_SECONDS+1||!Number.isInteger(v.size)||v.size<1||v.size>MAX_BYTES)throw Error('Use a playable WebM or MP4, up to five minutes and 25 MB.');const start=Number(v.start),end=Number(v.end);if(!Number.isFinite(start)||!Number.isFinite(end)||start<0||end>v.duration+.05||end-start<.25)throw Error('Choose a valid start and end, at least a quarter-second apart.');const linkDays=v.linkDays??7;if(![1,3,7].includes(linkDays))throw Error('Choose a link expiry of 1, 3 or 7 days.');return{title,type,duration:v.duration,size:v.size,start,end,linkDays,...validateExtras(v,v.duration)}} +export function clipInput(v){const title=text(v.title,100,true),type=TYPES.find(t=>String(v.type).split(';')[0].trim()===t);if(!type||!Number.isFinite(v.duration)||v.duration<=0||v.duration>MAX_SECONDS+1||!Number.isInteger(v.size)||v.size<1||v.size>MAX_BYTES)throw Error('Use a playable WebM or MP4, up to ten minutes and 50 MB.');const start=Number(v.start),end=Number(v.end);if(!Number.isFinite(start)||!Number.isFinite(end)||start<0||end>v.duration+.05||end-start<.25)throw Error('Choose a valid start and end, at least a quarter-second apart.');const linkDays=v.linkDays??7;if(![1,3,7].includes(linkDays))throw Error('Choose a link expiry of 1, 3 or 7 days.');const reviewStatus=v.reviewStatus??'needs-feedback';if(!REVIEW_STATES.includes(reviewStatus))throw Error('Choose a valid review status.');return{reviewStatus,title,type,duration:v.duration,size:v.size,start,end,linkDays,...validateExtras(v,v.duration)}} export function commentInput(v,clip){const body=text(v.text,500,true),name=text(typeof v.name==='string'?(v.name.trim()||'Guest'):(v.name||'Guest'),40,true),time=Number(v.time),parentId=v.parentId||null;if(parentId&&!validId(parentId))throw Error('Choose an existing reply.');if(!Number.isFinite(time)||timeclip.end+.1)throw Error('Choose a timestamp inside this clip.');return{text:body,name,time:Math.max(clip.start,Math.min(time,clip.end)),parentId}} -export function publicClip(c){return{id:c.id,title:c.title,width:c.width,height:c.height,start:c.start,end:c.end,duration:c.duration,createdAt:c.createdAt,expiresAt:c.expiresAt,passwordProtected:!!c.passwordHash,discussionRevision:c.discussionRevision||0,captions:c.captions||[],chapters:c.chapters||[],report:c.report||null,comments:(c.comments||[]).map(({id,name,text,time,createdAt,parentId=null,editedAt,deleted=false,resolved=false,creator=false})=>({id,name:deleted?'Deleted comment':name,text:deleted?'':text,time,createdAt,parentId,editedAt,deleted,resolved,creator})),reactions:Object.fromEntries(['like','thanks','idea'].map(k=>[k,Object.values(c.votes||{}).filter(v=>v===k).length]))}} +export function publicClip(c){return{id:c.id,title:c.title,reviewStatus:c.reviewStatus||'needs-feedback',width:c.width,height:c.height,start:c.start,end:c.end,duration:c.duration,createdAt:c.createdAt,expiresAt:c.expiresAt,passwordProtected:!!c.passwordHash,discussionRevision:c.discussionRevision||0,captions:c.captions||[],chapters:c.chapters||[],report:c.report||null,comments:(c.comments||[]).map(({id,name,text,time,createdAt,parentId=null,editedAt,deleted=false,resolved=false,creator=false})=>({id,name:deleted?'Deleted comment':name,text:deleted?'':text,time,createdAt,parentId,editedAt,deleted,resolved,creator})),reactions:Object.fromEntries(['like','thanks','idea'].map(k=>[k,Object.values(c.votes||{}).filter(v=>v===k).length]))}} export function formatTime(n){n=Math.max(0,Math.floor(Number(n)||0));return `${Math.floor(n/60)}:${String(n%60).padStart(2,'0')}`} export function isVideo(bytes,type){return type==='video/webm'?bytes[0]===26&&bytes[1]===69&&bytes[2]===223&&bytes[3]===163:String.fromCharCode(...bytes.slice(4,8))==='ftyp'} diff --git a/lib/transfer.js b/lib/transfer.js index bb9db51..6df8e17 100644 --- a/lib/transfer.js +++ b/lib/transfer.js @@ -1 +1 @@ -export async function retryTransfer(send,onRetry=()=>{},delay=ms=>new Promise(r=>setTimeout(r,ms))){for(let attempt=0;;attempt++){try{return await send()}catch(e){if(e.code==='STORAGE_ACCESS_UNAVAILABLE'||attempt>=3||e.status&&e.status<500&&e.status!==429)throw e;onRetry(attempt+1);await delay(500*2**attempt)}}} +export async function retryTransfer(send,onRetry=()=>{},delay=ms=>new Promise(r=>setTimeout(r,ms))){for(let attempt=0;;attempt++){try{return await send()}catch(e){if(e.name==='AbortError'||e.code==='STORAGE_ACCESS_UNAVAILABLE'||attempt>=3||e.status&&e.status<500&&e.status!==429)throw e;onRetry(attempt+1);await delay(500*2**attempt)}}} diff --git a/package-lock.json b/package-lock.json index 166fc0f..49e06e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "screennote", - "version": "0.4.0", + "version": "0.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "screennote", - "version": "0.4.0", + "version": "0.5.0", "dependencies": { "@vercel/blob": "2.8.2", "esbuild": "0.28.2", diff --git a/package.json b/package.json index 08b8b1c..56f8ef5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "screennote", - "version": "0.4.0", + "version": "0.5.0", "type": "module", "private": true, "scripts": { diff --git a/public/app.js b/public/app.js index 6627bc6..a4ea593 100644 --- a/public/app.js +++ b/public/app.js @@ -1,3 +1,5 @@ +import {PROFILES,sharingProblem,stopMessage} from '../lib/recording-policy.js'; +import {filterRecordings,reviewLabel} from '../lib/library.js'; import {discussionMarkup,mountDiscussion} from './discussion-ui.js'; import {importTitle,isGeneratedTitle,validTitle} from '../lib/titles.js'; import {version as APP_VERSION} from '../package.json'; @@ -10,45 +12,92 @@ import {trimExtras} from '../lib/enrichment.js'; import {createDraftWriter} from '../lib/draft-writer.js'; import {recoveryDocument,recoveryKeys} from '../lib/recovery.js'; import fixDuration from'fix-webm-duration'; -import{Capture,trimVideo}from'./capture.js';import*as db from'./db.js';import{CHUNK_BYTES,randomId,formatTime,MAX_BYTES,MAX_SECONDS}from'../lib/rules.js'; +import{Capture,trimVideo}from'./capture.js';import*as db from'./db.js';import{CHUNK_BYTES,randomId,formatTime,MAX_BYTES,MAX_SECONDS,LOCAL_MAX_BYTES,LOCAL_MAX_SECONDS}from'../lib/rules.js'; const $=s=>document.querySelector(s),esc=s=>String(s??'').replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c])); const paths={video:'',grid:'',screen:'',mic:'',sound:'',play:'',arrow:'',plus:'',download:'',shield:'',moon:'',pause:'',stop:'',back:''}; const icon=k=>``; const brand=()=>''; +let libraryFilters={query:'',status:'all',sort:'newest'},uploadController=null,cameraBubble={x:.76,y:.72,size:.28}; let clips=[],selected=null,objectURL=null,capture=null,recording=false,paused=false,busy=false,health=false,healthChecked=false,healthChecking=false,sharingIssue='',libraryReady=false,draft=null,viewData=null,viewer=randomId(),vote='',discussionUI=null,viewerOwner='',noticeTimer,markupUI=null,recordMarkup=[],countdownTimer=null,viewerPassword='',emergencyBlob=null,emergencyURL=null; try{document.documentElement.dataset.theme=localStorage.getItem('screennote-theme')||'light';viewer=localStorage.getItem('screennote-viewer')||viewer;localStorage.setItem('screennote-viewer',viewer)}catch{} const app=$('#app'),modal=$('#modal'); +function updateConnection(){const b=$('#connection-state');if(b){b.textContent=navigator.onLine?'':'Offline · local work is still available';b.hidden=navigator.onLine}} +window.addEventListener('offline',updateConnection);window.addEventListener('online',()=>{updateConnection();if(libraryReady)checkSharing()}); let renderedView=null; function notify(message){clearTimeout(noticeTimer);$('#notice').textContent=message;$('#notice').style.display='block';noticeTimer=setTimeout(()=>$('#notice').style.display='none',7000)} function error(e){console.error(e);const box=$('#error');if(box){box.textContent=e.message||String(e);box.scrollIntoView({block:'nearest'})}else notify(e.message||String(e))} -async function checkSharing(){if(healthChecking)return;healthChecking=true;const retry=$('[data-action=check-sharing]');if(retry)retry.disabled=true;const status=$('#sharing-status');if(status)status.textContent='Checking sharing connection…';try{const result=await retryTransfer(()=>api('health'));health=!!result.configured;sharingIssue=health?'':'Online sharing is unavailable. Local editing and downloads still work.'}catch(e){health=false;sharingIssue=e.code==='STORAGE_ACCESS_UNAVAILABLE'?e.message:'Sharing connection failed. Your local copy is safe; retry when connected.'}finally{healthChecked=true;healthChecking=false;const banner=$('#service-status');if(banner){banner.textContent=sharingIssue;banner.hidden=health}const publish=$('[data-action=publish]');if(publish)publish.disabled=!health||!selected?.blob;const message=$('#sharing-status');if(message)message.textContent=health?'':sharingIssue;const button=$('[data-action=check-sharing]');if(button){button.hidden=health;button.disabled=false}}} -async function api(op,data,id){const r=await fetch('/api/clip?op='+op+(id?'&id='+encodeURIComponent(id):''),data?{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(data),signal:AbortSignal.timeout(65000)}:{signal:AbortSignal.timeout(65000)});let v;try{v=await r.json()}catch{throw Error('The sharing service did not respond. Your local copy is safe.')}if(!r.ok)throw Object.assign(Error(v.error||'Sharing failed. Keep your local copy and retry.'),{status:r.status,code:v.code});return v} -function shell(content,page='My recordings',view=page){discussionUI?.destroy();discussionUI=null;const navigated=renderedView!==view;renderedView=view;markupUI?.destroy();markupUI=null;app.innerHTML=`
Your space ${page}${brand()}
Early access · local first
${esc(sharingIssue)}
${emergencyBlob?``:''}${content}
ScreenNote · A little more human.Your recordings stay here until you choose to publish.
`;if(navigated){window.scrollTo({top:0,left:0,behavior:'instant'});$('#main').focus({preventScroll:true})}} +async function checkSharing(){if(healthChecking)return;healthChecking=true;const retry=$('[data-action=check-sharing]');if(retry)retry.disabled=true;const status=$('#sharing-status');if(status)status.textContent='Checking sharing connection…';try{const result=await retryTransfer(()=>api('health'));health=!!result.configured;sharingIssue=health?'':'Online sharing is unavailable. Local editing and downloads still work.'}catch(e){health=false;sharingIssue=e.code==='STORAGE_ACCESS_UNAVAILABLE'?e.message:'Sharing connection failed. Your local copy is safe; retry when connected.'}finally{healthChecked=true;healthChecking=false;const banner=$('#service-status');if(banner){banner.textContent=sharingIssue;banner.hidden=health}const publish=$('[data-action=publish]');if(publish)publish.disabled=!health||!selected?.blob||!!sharingProblem(selected);const message=$('#sharing-status');if(message)message.textContent=health?'':sharingIssue;const button=$('[data-action=check-sharing]');if(button){button.hidden=health;button.disabled=false}}} +async function api(op,data,id){const signal=uploadController?AbortSignal.any([uploadController.signal,AbortSignal.timeout(65000)]):AbortSignal.timeout(65000);const r=await fetch('/api/clip?op='+op+(id?'&id='+encodeURIComponent(id):''),data?{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(data),signal}:{signal});let v;try{v=await r.json()}catch(e){if(e.name==='AbortError')throw e;throw Error('The sharing service did not respond. Your local copy is safe.')}if(!r.ok)throw Object.assign(Error(v.error||'Sharing failed. Keep your local copy and retry.'),{status:r.status,code:v.code});return v} +function shell(content,page='My recordings',view=page){discussionUI?.destroy();discussionUI=null;const navigated=renderedView!==view;renderedView=view;markupUI?.destroy();markupUI=null;app.innerHTML=`
Your space ${page}${brand()}
Early access · local first

${navigator.onLine?'':'Offline · local work is still available'}

${esc(sharingIssue)}
${emergencyBlob?``:''}${content}
ScreenNote · A little more human.Your recordings stay here until you choose to publish.
`;if(navigated){window.scrollTo({top:0,left:0,behavior:'instant'});$('#main').focus({preventScroll:true})}} const isShared=c=>!!c.shared&&!c.revoked&&c.expiresAt>Date.now(); function unsavedTitle(){const field=$('#recording-title-input');return !!(selected&&field&&field.value!==(isGeneratedTitle(selected.title)?'Untitled recording':selected.title))} function confirmEditorLeave(){return !unsavedTitle()||confirm('Leave this recording? Your unsaved title will be lost. Your saved video stays on this device.')} -function home(){if(recording||busy)return;const canRecord=globalThis.isSecureContext&&!!navigator.mediaDevices?.getDisplayMedia&&!!globalThis.MediaRecorder;selected=null;resetURL();shell(`
LESS BACK-AND-FORTH. MORE CLARITY.

A quick video.
A lot less explaining.

Show your screen. Add your voice. Send the link.
Let the conversation happen in its own time.

Free beta · Viewers need no account. Up to 5 minutes / 25 MB. Shared storage uses a 1 GB budget; capacity depends on video sizes.
YOUR NEXT GOOD EXPLANATION
${icon('play')}

Ready when you are.

A walkthrough, an update, or a little context.

Up to 5 minutes · 25 MB per shared clipReview first. Publish when ready.
MAKE YOURSELF CLEAR

${canRecord?'What are we recording?':'Bring your recording.'}

${canRecord?'Choose a source next, then prepare your recording before the countdown.':'Import a device recording, review it, then share when ready.'}

${option('mic','Microphone','Your voice, alongside your screen','mic',canRecord)}
${option('video','Camera bubble','Put a face to your message','camera',canRecord)}${option('sound','Shared-screen audio','When your browser offers it','system',canRecord)}${!canRecord?('

'+(window.__ANDROID_APP__?'Use Record screen below to capture, then bring the recording in here.':'Screen capture is unavailable in this browser. Import an MP4 or WebM instead.')+'

'):''}

Your recordings ${clips.length}

Saved in this browser
${clips.length?clips.map(c=>`
${c.thumbnail?``:icon('video')}${formatTime(c.duration)}

${esc(isGeneratedTitle(c.title)?'Untitled recording':c.title)}

${c.cloudDeleted?'Uploaded video deleted':isShared(c)?'Shared link · expires '+new Date(c.expiresAt).toLocaleDateString():c.revoked?'Sharing stopped':c.shared?'Shared link expired':c.managementOnly?'Recovered management access':c.sample?'Sample clip · local only':'Only on this device'} · ${new Date(c.createdAt).toLocaleDateString()}
`).join(''):`

Your ideas belong here.

Record your first message, import a video, or explore with a real sample clip.

`}
`);$('#import-video').onchange=e=>{const file=e.target.files[0];if(file)run(async()=>{const status=$('#import-status');if(status)status.textContent='Reading and checking your video…';e.target.disabled=true;try{await importVideo(file)}finally{e.target.value='';e.target.disabled=false;if(status?.isConnected)status.textContent=''}})}} +function home(){ + if(recording||busy)return; + const canRecord=globalThis.isSecureContext&&!!navigator.mediaDevices?.getDisplayMedia&&!!globalThis.MediaRecorder; + selected=null;resetURL(); + const returning=clips.length>0; + shell(`
YOUR WORK. CLEARLY EXPLAINED.

${returning?'Your recordings.':'Show it. Send it. Sorted.'}

${returning?'Pick up a conversation, or start a new one.':'Record a walkthrough. Share a link. Get useful feedback.'}

+
Local until you publish · No account needed to watch
+ ${returning?libraryMarkup():''} +
${canRecord||window.__ANDROID_APP__?'Record something new':'Import a device recording'}
A LITTLE CONTEXT GOES A LONG WAY

${canRecord?'Ready to record?':'Bring your recording.'}

${canRecord?'Choose your screen next. Review before you share.':'Use your phone’s screen recorder, then import the video here.'}

${icon('screen')}
+ + ${!canRecord?'

'+(window.__ANDROID_APP__?'Use Record screen below to capture, then bring the recording in here.':'This browser does not offer screen capture. MP4 and WebM imports work here.')+'

':''} +
${option('mic','Microphone','Include your voice','mic',canRecord)}
+
Camera, audio & microphone source${option('video','Camera bubble','Move and resize it in the preview','camera',canRecord)}${option('sound','Shared-screen audio','When your browser offers it','system',canRecord)}
+

Local: 30 min / 250 MB · Share: 10 min / 50 MB

+
+ ${returning?'':libraryMarkup()}`); + $('#import-video').onchange=e=>{const file=e.target.files[0];if(file)run(async()=>{const status=$('#import-status');status.textContent='Checking your video…';e.target.disabled=true;try{await importVideo(file)}finally{e.target.value='';e.target.disabled=false;if(status.isConnected)status.textContent=''}})}; + for(const name of ['library-search','library-status','library-sort'])$('#'+name).addEventListener(name==='library-search'?'input':'change',renderLibrary); + renderLibrary(); +} +function libraryMarkup(){return `

Your library ${clips.length}

On this device

`} +function renderLibrary(){ + libraryFilters={query:$('#library-search').value,status:$('#library-status').value,sort:$('#library-sort').value}; + const visible=filterRecordings(clips,libraryFilters);$('#library-count').textContent=clips.length?`${visible.length} of ${clips.length} recordings`:''; + $('#library-grid').innerHTML=visible.length?visible.map(c=>`
${isShared(c)?'Shared':'Local'}${reviewLabel(c.reviewStatus)}

${esc(isGeneratedTitle(c.title)?'Untitled recording':c.title)}

${c.cloudDeleted?'Upload deleted':isShared(c)?'Link expires '+new Date(c.expiresAt).toLocaleDateString():c.revoked?'Sharing stopped':c.shared?'Link expired':c.managementOnly?'Management access only':c.sample?'Sample walkthrough':'Saved on this device'} · ${new Date(c.createdAt).toLocaleDateString()}
`).join(''):`

${clips.length?'No matching recordings.':'Your first clear explanation starts here.'}

${clips.length?'Try another title or filter.':'Record a message or explore a sample walkthrough.'}

${clips.length?'':''}
`; +} function option(i,title,copy,id,enabled=true){return ``} function resetURL(){if(objectURL)URL.revokeObjectURL(objectURL);objectURL=null} function fitPlayer(video){if(!video)return;const fit=()=>{if(video.videoWidth&&video.videoHeight){video.style.aspectRatio=video.videoWidth+'/'+video.videoHeight;video.parentElement.style.setProperty('--media-ratio',video.videoWidth/video.videoHeight)}};video.addEventListener('loadedmetadata',fit);video.addEventListener('resize',fit);fit()} function localVideo(){resetURL();if(!selected.blob)return '
Management access restored. The video file is not stored on this device. Use the shared viewer while the link is active.
';objectURL=URL.createObjectURL(selected.blob);return ``} -function editor(c){selected=c;const shareLocked=c.uploadAttempted&&!newShareIdentity(c),shared=isShared(c),cloud=!!(c.shared||c.revoked||c.uploadAttempted)&&!c.cloudDeleted&&!c.cloudMissing;shell(`

Review & share

${c.blob?'Saved on this device. Review your video before sharing.':'Manage your shared video.'}

${localVideo()}
More actions${c.originalFilename?`
Original filename${esc(c.originalFilename)}
`:''}
${c.blob?`
Trim video

Trim a new copy on this device. Processing runs at playback speed; keep this tab open. The original stays intact.

`:''}${extrasPanel(c)}${c.blob?markupEditor():''}
`,'Recording','recording:'+c.id);fitPlayer($('#player'));mountExtras(c,{save:async extras=>{busy=true;try{if(c.shared&&!c.cloudDeleted)await api('details',{id:c.id,owner:c.owner,...extras});Object.assign(c,extras);await db.put(c);clips=await db.all()}finally{busy=false}},download:saveFile,error});if(c.blob)mountMarkupEditor(c);} +function editor(c){selected=c;const shareLocked=c.uploadAttempted&&!newShareIdentity(c),shared=isShared(c),cloud=!!(c.shared||c.revoked||c.uploadAttempted)&&!c.cloudDeleted&&!c.cloudMissing;shell(`

Review & share

${c.blob?'Saved on this device. Review your video before sharing.':'Manage your shared video.'}

${localVideo()}
More actions${c.originalFilename?`
Original filename${esc(c.originalFilename)}
`:''}
${c.blob?`
Trim video

Trim a new copy on this device. Processing runs at playback speed; keep this tab open. The original stays intact.

`:''}${extrasPanel(c)}${c.sample?'
EXAMPLE FEEDBACK

One moment. A useful conversation.

Illustrative comments for this walkthrough.

Alex · Could the checkout button be clearer?

Sam · Yes — increase the contrast and keep the label short.

Alex · That works. Ready for another review.

':''}${c.blob?markupEditor():''}
`,'Recording','recording:'+c.id);fitPlayer($('#player'));$('#review-status').onchange=()=>run(async()=>{const field=$('#review-status'),next=field.value,old=c.reviewStatus||'needs-feedback';field.disabled=true;try{if((c.shared||c.uploadAttempted)&&!c.cloudDeleted&&!c.cloudMissing)await api('review-status',{id:c.id,owner:c.owner,reviewStatus:next});c.reviewStatus=next;await db.put(c);clips=await db.all();$('#review-status-message').textContent='Status saved.'}catch(e){field.value=old;throw e}finally{field.disabled=false}});mountExtras(c,{save:async extras=>{busy=true;try{if(c.shared&&!c.cloudDeleted)await api('details',{id:c.id,owner:c.owner,...extras});Object.assign(c,extras);await db.put(c);clips=await db.all()}finally{busy=false}},download:saveFile,error});if(c.blob)mountMarkupEditor(c);for(const b of document.querySelectorAll('[data-sample-time]'))b.onclick=()=>{$('#player').currentTime=Number(b.dataset.sampleTime);$('#player').play().catch(()=>{})};} async function fixed(blob,seconds){return blob.type.startsWith('video/webm')?await new Promise(resolve=>fixDuration(blob,seconds*1000,resolve,{logger:false})):blob} -async function metadata(blob,knownDuration){const v=document.createElement('video'),url=URL.createObjectURL(blob);v.muted=true;v.preload='metadata';v.src=url;try{await new Promise((resolve,reject)=>{const t=setTimeout(()=>reject(Error('Could not read this video. Try another MP4 or WebM.')),10000);v.onloadedmetadata=()=>{clearTimeout(t);resolve()};v.onerror=()=>{clearTimeout(t);reject(Error('This file is not a playable video in this browser.'))}});let duration=knownDuration||v.duration;if(!Number.isFinite(duration))throw Error('This video has no readable duration. Re-export it as MP4 or WebM, then import again.');if(!v.videoWidth||!v.videoHeight)throw Error('This file does not contain a playable video track.');if(duration<=0||duration>301)throw Error('Choose a video up to five minutes long.');v.currentTime=Math.min(.2,duration/2);await new Promise(resolve=>{v.onseeked=resolve;setTimeout(resolve,1200)});const canvas=document.createElement('canvas');canvas.width=480;canvas.height=Math.round(480*v.videoHeight/v.videoWidth);canvas.getContext('2d').drawImage(v,0,0,canvas.width,canvas.height);return{duration,thumbnail:canvas.toDataURL('image/jpeg',.6)}}finally{URL.revokeObjectURL(url)}} +async function metadata(blob,knownDuration){const v=document.createElement('video'),url=URL.createObjectURL(blob);v.muted=true;v.preload='metadata';v.src=url;try{await new Promise((resolve,reject)=>{const t=setTimeout(()=>reject(Error('Could not read this video. Try another MP4 or WebM.')),10000);v.onloadedmetadata=()=>{clearTimeout(t);resolve()};v.onerror=()=>{clearTimeout(t);reject(Error('This file is not a playable video in this browser.'))}});let duration=knownDuration||v.duration;if(!Number.isFinite(duration))throw Error('This video has no readable duration. Re-export it as MP4 or WebM, then import again.');if(!v.videoWidth||!v.videoHeight)throw Error('This file does not contain a playable video track.');if(duration<=0||duration>LOCAL_MAX_SECONDS+1)throw Error('Choose a local video up to 30 minutes long.');v.currentTime=Math.min(.2,duration/2);await new Promise(resolve=>{v.onseeked=resolve;setTimeout(resolve,1200)});const canvas=document.createElement('canvas');canvas.width=480;canvas.height=Math.round(480*v.videoHeight/v.videoWidth);canvas.getContext('2d').drawImage(v,0,0,canvas.width,canvas.height);return{duration,thumbnail:canvas.toDataURL('image/jpeg',.6)}}finally{URL.revokeObjectURL(url)}} async function importVideo(file,{sample=false,title}={}){if(busy||recording)return;busy=true;try{const media=await importMedia(file);const info=await metadata(media.blob),c={id:randomId(),owner:secret(),title:importTitle(file.name,title),originalFilename:file.name,blob:media.blob,type:media.type,createdAt:Date.now(),sample,...info};await db.put(c);clips=await db.all();editor(c)}finally{busy=false}} function secret(){return[...crypto.getRandomValues(new Uint8Array(32))].map(n=>n.toString(16).padStart(2,'0')).join('')} function markupTools(){return `
0 marks
`} function fitCaptureFrame(video){const update=()=>{if(video.videoWidth&&video.videoHeight)video.parentElement.style.setProperty('--capture-ratio',video.videoWidth/video.videoHeight)};video.addEventListener('loadedmetadata',update);video.addEventListener('resize',update);update()} function mountTools(items){markupUI=bindMarkup($('#markup-canvas'),items,n=>$('#markup-count').textContent=n+' marks',$('#markup-video'));$('#markup-tool').onchange=e=>markupUI.setKind(e.target.value);$('#undo-markup').onclick=()=>markupUI.undo();$('#clear-markup').onclick=()=>markupUI.clear()} +function updateCaptureMetrics(stats){ + if(!$('#record-size'))return; + $('#record-size').textContent=(stats.bytes/1e6).toFixed(1)+' MB'; + $('#record-remaining').textContent=`About ${formatTime(stats.remaining)} local recording left${stats.paused?' · paused':''}`; + $('#mic-meter').value=stats.level||0; + const message=$('#record-share-warning');message.textContent=!stats.shareable?'Past the sharing limit. Your local recording continues; trim or make a smaller copy before publishing.':stats.shareRemaining<60?`About ${formatTime(stats.shareRemaining)} left within sharing limits. Local recording can continue.`:''; +} +function mountCameraHandle(enabled){ + if(!enabled)return;const frame=$('#live-preview').parentElement,handle=document.createElement('button'); + handle.type='button';handle.className='camera-handle';handle.setAttribute('aria-label','Move camera bubble (arrow keys or drag)');handle.textContent='Move camera';frame.append(handle); + const place=()=>{const width=frame.clientWidth,height=frame.clientHeight,size=Math.min(width,height)*cameraBubble.size;cameraBubble.x=Math.max(0,Math.min(cameraBubble.x,1-size/width));cameraBubble.y=Math.max(0,Math.min(cameraBubble.y,1-size/height));handle.style.left=(cameraBubble.x*100)+'%';handle.style.top=(cameraBubble.y*100)+'%';handle.style.width=size+'px';handle.style.height=size+'px'}; + let dragging=false,dx=0,dy=0; + handle.onpointerdown=e=>{dragging=true;const r=handle.getBoundingClientRect();dx=e.clientX-r.left;dy=e.clientY-r.top;handle.setPointerCapture(e.pointerId);e.preventDefault()}; + handle.onpointermove=e=>{if(!dragging)return;const r=frame.getBoundingClientRect();cameraBubble.x=(e.clientX-r.left-dx)/r.width;cameraBubble.y=(e.clientY-r.top-dy)/r.height;place()}; + handle.onpointerup=handle.onpointercancel=()=>dragging=false; + handle.onkeydown=e=>{const dirs={ArrowLeft:[-.03,0],ArrowRight:[.03,0],ArrowUp:[0,-.03],ArrowDown:[0,.03]};if(dirs[e.key]){e.preventDefault();cameraBubble.x+=dirs[e.key][0];cameraBubble.y+=dirs[e.key][1];place()}}; + $('#bubble-size').oninput=e=>{cameraBubble.size=Number(e.target.value)/100;place()}; + $('#live-preview').addEventListener('loadedmetadata',place);place(); +} function cancelCapture(){clearInterval(countdownTimer);capture?.cancel();capture=null;recording=false;busy=false;home()} -function beginRecording(){if(busy||!capture)return;busy=true;let n=3;const button=$('[data-action=begin-recording]');button.disabled=true;$('#capture-countdown').textContent=`Starting in ${n}…`;countdownTimer=setInterval(()=>{n--;if(n){$('#capture-countdown').textContent=`Starting in ${n}…`;return}clearInterval(countdownTimer);run(async()=>{try{capture.begin();recording=true;busy=false;paused=false;$('#capture-countdown').textContent='';$('#capture-heading').textContent='Show what you mean.';$('#capture-status').textContent='Your video stays local. Stop to review and publish.';$('#setup-actions').hidden=true;$('#live-actions').hidden=false;$('#recording-status').textContent='RECORDING IN PROGRESS'}catch(e){cancelCapture();throw e}})},1000)} -async function startRecording(){if(recording||busy)return;if(emergencyBlob)throw Error('Download the unsaved recording and choose I saved my copy before recording again.');busy=true;const options={mic:$('#mic').checked,camera:$('#camera').checked,system:$('#system').checked,micId:$('#mic-source')?.value||'',defer:true,markup:recordMarkup=[]};draft={id:randomId(),chunks:[],createdAt:Date.now(),seconds:0};const writer=createDraftWriter(d=>db.saveDraft(d),()=>notify('Recovery storage is unavailable. Keep this tab open and download your video after stopping.'));const session=capture=new Capture({setupEnded:()=>{cancelCapture();notify('Screen sharing ended before recording. Choose a source again.')},chunk:(blob,seconds)=>{draft.chunks.push(blob);draft.seconds=seconds;writer.save(structuredClone(draft))},status:s=>{if($('#record-time'))$('#record-time').textContent=formatTime(s)},finished:async(blob,duration,e)=>{busy=true;recording=false;try{await writer.flush();if(!blob.size)throw Error('No video was captured. Try recording again.');blob=await fixed(blob,duration);const info=await metadata(blob,duration),c={id:randomId(),owner:secret(),title:'A quick walkthrough',blob,type:blob.type.split(';')[0],createdAt:Date.now(),...info};await db.finish(c,draft.id);clips=await db.all();busy=false;editor(c);if(e)notify('Recording stopped early. The captured video is saved.')}catch(err){busy=false;if(!blob.size){home();error(err);return}resetURL();emergencyBlob=blob;emergencyURL=URL.createObjectURL(blob);shell(`

Download your recording now.

The captured video is still in this tab, but could not be saved to the local library. Download it before leaving or closing this tab.

`,'Recording');}}});try{const prepared=session.start(options);shell(`
BROWSER PERMISSION

Choose what to share.

Waiting for your browser’s screen picker or device permission. Nothing is recording yet.

Select a screen, window or tab in the browser prompt. Requests time out after one minute. If the prompt blocks this page, dismiss it in your browser. You can then retry or import a device recording.

`,'Recording permissions');const stream=await prepared;if(capture!==session)return;busy=false;recording=true;paused=false;shell(`
CHOOSE WHAT TO SHOW

Prepare your recording.

Nothing is recording yet. Add masks and marks on the preview, then begin.

${markupTools()}

Drag on the preview to add a mark (up to 40). Opaque masks cover pixels; soft blur is a visual effect and may leave details readable. Masks stay at fixed frame positions, so keep sensitive content inside them. Only frames captured after a change include that change. For full-screen walkthroughs, return here to change marks, or mask the saved video before publishing.

Keep this tab open. Stops at five minutes or the recording size limit. Shared audio depends on your browser and source. Shortcuts: Alt+Shift+P pauses/resumes; Alt+Shift+S stops.
`,'Recording');$('#live-preview').srcObject=stream;fitCaptureFrame($('#live-preview'));$('#live-preview').play().catch(()=>{});mountTools(recordMarkup)}catch(e){session.cancel();if(capture!==session)return;capture=null;busy=false;recording=false;home();throw Error(e.name==='NotAllowedError'?'Recording permission was declined. Nothing was uploaded. Try again or import a video.':e.message)}} -async function publish(){let c=selected;if(c)c.title=validTitle($('#recording-title-input')?$('#recording-title-input').value:c.title);if(!health||!c?.blob)throw Error('Sharing is not available yet.');const {linkDays,password,newIdentity}=shareOptions(c,Number($('#link-days')?.value||c.linkDays||7),$('#share-password')?.value||'');if(newIdentity){c={...c,id:randomId(),owner:secret(),revoked:false,shared:false,cloudDeleted:false,cloudMissing:false,uploadAttempted:false,passwordProtected:!!password};await db.put(c);selected=c;clips=await db.all()}c.linkDays=linkDays;c.passwordProtected=!!password||!!c.passwordProtected;busy=true;const button=$('[data-action=publish]');button.disabled=true;try{const input={id:c.id,owner:c.owner,title:c.title,type:c.type,duration:c.duration,size:c.blob.size,start:0,end:c.duration,linkDays,password,captions:c.captions||[],chapters:c.chapters||[],report:c.report||null};$('#upload-meter').hidden=false;$('#upload-meter').value=0;$('#upload-progress').textContent='Preparing a private upload…';c.uploadAttempted=true;await db.put(c);let reservation;try{reservation=await retryTransfer(()=>api('reserve',input),attempt=>$('#upload-progress').textContent=`Sharing service interrupted. Retrying upload setup (${attempt}/3)…`)}catch(e){if(e.status!==409)throw e;const state=await api('manage',{id:c.id,owner:c.owner});if(!['expired','deleted','revoked'].includes(state.status))throw e;c.revoked=true;await db.put(c);busy=false;return await publish()}const uploaded=new Set(reservation.status==='published'?[]:(await retryTransfer(()=>api('upload-state',{id:c.id,owner:c.owner}))).parts||[]);$('#upload-progress').textContent=uploaded.size?'Resuming saved upload… Your local copy is safe.':'Uploading video… Your local copy is safe.';for(let part=0,offset=0;reservation.status!=='published'&&offset{const reader=new FileReader();reader.onload=()=>resolve(reader.result.split(',')[1]);reader.onerror=()=>reject(Error('Could not read the local video.'));reader.readAsDataURL(chunk)});await retryTransfer(()=>api('upload-chunk',{id:c.id,owner:c.owner,part,data}),attempt=>$('#upload-progress').textContent=`Connection interrupted. Retrying part ${part+1} (${attempt}/3)…`);$('#upload-meter').value=Math.round(Math.min(c.blob.size,offset+CHUNK_BYTES)/c.blob.size*100);$('#upload-progress').textContent=`Uploading ${Math.round(Math.min(c.blob.size,offset+CHUNK_BYTES)/c.blob.size*100)}% · your local copy is safe.`}$('#upload-progress').textContent='Finalizing your video…';const shared=await retryTransfer(()=>api('publish',{id:c.id,owner:c.owner}),attempt=>$('#upload-progress').textContent=`Sharing service interrupted. Retrying finalization (${attempt}/3)…`);c.shared=true;c.passwordProtected=shared.passwordProtected;c.expiresAt=shared.expiresAt;await db.put(c);clips=await db.all();busy=false;editor(c);notify('Your link is ready. The local copy is still here.')}catch(e){busy=false;editor(c);throw e}finally{busy=false;button.disabled=false}} +function beginRecording(){if(busy||!capture)return;busy=true;let n=3;const button=$('[data-action=begin-recording]');button.disabled=true;$('#capture-countdown').textContent=`Starting in ${n}…`;countdownTimer=setInterval(()=>{n--;if(n){$('#capture-countdown').textContent=`Starting in ${n}…`;return}clearInterval(countdownTimer);run(async()=>{try{capture.begin();recording=true;busy=false;paused=false;$('#capture-countdown').textContent='';$('.recording')?.classList.add('is-live');$('#capture-heading').textContent='Show what you mean.';$('#capture-status').textContent='Your video stays local. Stop to review and publish.';$('#setup-actions').hidden=true;$('#live-actions').hidden=false;$('#recording-status').textContent='RECORDING IN PROGRESS'}catch(e){cancelCapture();throw e}})},1000)} +async function startRecording(){if(recording||busy)return;if(emergencyBlob)throw Error('Download the unsaved recording and choose I saved my copy before recording again.');busy=true;const options={mic:$('#mic').checked,camera:$('#camera').checked,system:$('#system').checked,micId:$('#mic-source')?.value||'',defer:true,quality:$('#record-quality')?.value||'balanced',bubble:cameraBubble={x:.76,y:.72,size:.28},markup:recordMarkup=[]};draft={id:randomId(),chunks:[],createdAt:Date.now(),seconds:0};const writer=createDraftWriter(d=>db.saveDraft(d),()=>notify('Recovery storage is unavailable. Keep this tab open and download your video after stopping.'));const session=capture=new Capture({setupEnded:()=>{cancelCapture();notify('Screen sharing ended before recording. Choose a source again.')},chunk:(blob,seconds)=>{draft.chunks.push(blob);draft.seconds=seconds;if(seconds-(draft.savedSeconds||0)>=5){draft.savedSeconds=seconds;writer.save(structuredClone(draft))}},status:s=>{if($('#record-time'))$('#record-time').textContent=formatTime(s)},metrics:updateCaptureMetrics,finished:async(blob,duration,e,diagnostics)=>{busy=true;recording=false;try{writer.save(structuredClone(draft));await writer.flush();if(!blob.size)throw Error('No video was captured. Try recording again.');blob=await fixed(blob,duration);const info=await metadata(blob,duration),c={id:randomId(),owner:secret(),title:'A quick walkthrough',blob,type:blob.type.split(';')[0],createdAt:Date.now(),diagnostics,...info};await db.finish(c,draft.id);clips=await db.all();busy=false;editor(c);notify(stopMessage(e?'error':diagnostics?.reason))}catch(err){busy=false;if(!blob.size){home();error(err);return}resetURL();emergencyBlob=blob;emergencyURL=URL.createObjectURL(blob);shell(`

Download your recording now.

The captured video is still in this tab, but could not be saved to the local library. Download it before leaving or closing this tab.

`,'Recording');}}});try{const prepared=session.start(options);shell(`
BROWSER PERMISSION

Choose what to share.

Waiting for your browser’s screen picker or device permission. Nothing is recording yet.

Select a screen, window or tab in the browser prompt. Requests time out after one minute. If the prompt blocks this page, dismiss it in your browser. You can then retry or import a device recording.

`,'Recording permissions');const stream=await prepared;if(capture!==session)return;busy=false;recording=true;paused=false;shell(`
CHOOSE WHAT TO SHOW

Prepare your recording.

Nothing is recording yet. Add masks and marks on the preview, then begin.

${options.camera?'
Drag the camera handle to move it.
':''}${markupTools()}

Drag on the preview to add a mark (up to 40). Opaque masks cover pixels; soft blur is a visual effect and may leave details readable. Masks stay at fixed frame positions, so keep sensitive content inside them. Only frames captured after a change include that change. For full-screen walkthroughs, return here to change marks, or mask the saved video before publishing.

0 MBRemaining time is estimated while recording

Keep this tab open. Local recording stops at 30 minutes or 250 MB. Shared clips are limited to 10 minutes / 50 MB. Shared audio depends on your browser and source. Shortcuts: Alt+Shift+P pauses/resumes; Alt+Shift+S stops.
`,'Recording');$('#live-preview').srcObject=stream;fitCaptureFrame($('#live-preview'));$('#live-preview').play().catch(()=>{});mountTools(recordMarkup);mountCameraHandle(options.camera);updateCaptureMetrics({bytes:0,remaining:LOCAL_MAX_SECONDS,shareRemaining:MAX_SECONDS,level:0,shareable:true})}catch(e){session.cancel();if(capture!==session)return;capture=null;busy=false;recording=false;home();throw Error(e.name==='NotAllowedError'?'Recording permission was declined. Nothing was uploaded. Try again or import a video.':e.message)}} +async function publish(){let c=selected;if(c)c.title=validTitle($('#recording-title-input')?$('#recording-title-input').value:c.title);if(!health||!c?.blob)throw Error('Sharing is not available yet.');const problem=sharingProblem(c);if(problem)throw Error(problem);const {linkDays,password,newIdentity}=shareOptions(c,Number($('#link-days')?.value||c.linkDays||7),$('#share-password')?.value||'');if(newIdentity){c={...c,id:randomId(),owner:secret(),revoked:false,shared:false,cloudDeleted:false,cloudMissing:false,uploadAttempted:false,passwordProtected:!!password};await db.put(c);selected=c;clips=await db.all()}c.linkDays=linkDays;c.passwordProtected=!!password||!!c.passwordProtected;busy=true;uploadController=new AbortController();const button=$('[data-action=publish]');button.disabled=true;try{const input={id:c.id,owner:c.owner,title:c.title,type:c.type,duration:c.duration,size:c.blob.size,start:0,end:c.duration,linkDays,password,captions:c.captions||[],chapters:c.chapters||[],report:c.report||null,reviewStatus:c.reviewStatus||'needs-feedback'};$('#cancel-upload').hidden=false;$('#upload-meter').hidden=false;$('#upload-meter').value=0;$('#upload-progress').textContent='Preparing a private upload…';c.uploadAttempted=true;await db.put(c);let reservation;try{reservation=await retryTransfer(()=>api('reserve',input),attempt=>$('#upload-progress').textContent=`Sharing service interrupted. Retrying upload setup (${attempt}/3)…`)}catch(e){if(e.status!==409)throw e;const state=await api('manage',{id:c.id,owner:c.owner});if(!['expired','deleted','revoked'].includes(state.status))throw e;c.revoked=true;await db.put(c);busy=false;uploadController=null;return await publish()}const uploaded=new Set(reservation.status==='published'?[]:(await retryTransfer(()=>api('upload-state',{id:c.id,owner:c.owner}))).parts||[]);$('#upload-progress').textContent=uploaded.size?'Resuming saved upload… Your local copy is safe.':'Uploading video… Your local copy is safe.';for(let part=0,offset=0;reservation.status!=='published'&&offset{const reader=new FileReader();reader.onload=()=>resolve(reader.result.split(',')[1]);reader.onerror=()=>reject(Error('Could not read the local video.'));reader.readAsDataURL(chunk)});await retryTransfer(()=>api('upload-chunk',{id:c.id,owner:c.owner,part,data}),attempt=>$('#upload-progress').textContent=`Connection interrupted. Retrying part ${part+1} (${attempt}/3)…`);$('#upload-meter').value=Math.round(Math.min(c.blob.size,offset+CHUNK_BYTES)/c.blob.size*100);$('#upload-progress').textContent=`Uploading ${Math.round(Math.min(c.blob.size,offset+CHUNK_BYTES)/c.blob.size*100)}% · your local copy is safe.`}$('#upload-progress').textContent='Finalizing your video…';const shared=await retryTransfer(()=>api('publish',{id:c.id,owner:c.owner}),attempt=>$('#upload-progress').textContent=`Sharing service interrupted. Retrying finalization (${attempt}/3)…`);c.shared=true;c.uploadPaused=false;c.passwordProtected=shared.passwordProtected;c.expiresAt=shared.expiresAt;await db.put(c);clips=await db.all();busy=false;editor(c);notify('Your link is ready. The local copy is still here.')}catch(e){busy=false;if(e.name==='AbortError')c.uploadPaused=true;await db.put(c);editor(c);throw e}finally{uploadController=null;busy=false;button.disabled=false}} function saveFile(blob,name){const url=URL.createObjectURL(blob),a=document.createElement('a');a.href=url;a.download=name;document.body.append(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(url),60000)} function download(){const a=document.createElement('a');a.href=objectURL||URL.createObjectURL(selected.blob);a.download=selected.title.replace(/[^\p{L}\p{N} _-]/gu,'').slice(0,80)+(selected.type==='video/mp4'?'.mp4':'.webm');document.body.append(a);a.click();a.remove()} -function privacy(){if(recording||busy)return;shell(`
CLEAR BY DEFAULT

Your screen.
Your call.

ScreenNote only uploads a video when you choose Publish. Recording and trimming happen in your browser.

Before you publish

Recordings and recovery chunks are stored in this browser. Download videos you want to keep. Clearing site data, private browsing or losing this device can remove your local library.

After you publish

Older links from the previous storage service may be unavailable. Their videos have not been copied while that service denies access. If you have the original local video, refresh its shared status and publish a replacement link. Keep your original recovery keys.

The whole reviewed video is uploaded to private Supabase storage. An unlisted link lets anyone who has it watch and reply without a ScreenNote account. Do not include passwords or information you do not want the recipient to see. Unlisted does not mean encrypted end to end.

Links expire after 1, 3 or 7 days, as chosen before publication. Optional sharing passwords are verified on the server; issued playback URLs are bearer links with a five-minute lifetime. Captions, chapters and bug-report text you save are shared with viewers. Stop sharing blocks new viewer requests; already issued playback URLs may work for up to five more minutes. Expired uploads and abandoned reservations become eligible for deletion after a further 24 hours. ScreenNote reclaims them when new uploads reach shared capacity; cleanup is demand-driven, not a timed deletion guarantee.

Small, honest first release

Back up your recovery keys to restore management access after changing browsers or clearing site data. Keep them private: they authorize stopping sharing and deleting uploads. Videos are not included.

Clips are limited to five minutes and 25 MB. Shared uploads use a 1 GB storage budget. Pending uploads reserve space for both chunks and the assembled video. Deleting an uploaded video frees its slot after cleanup succeeds. Old expired uploads are also reclaimed when capacity is full. Local recording and downloads remain usable when sharing is full. Hosting quotas may pause online sharing; no paid upgrade is enabled by this application.

Screen capture needs a supported desktop browser. On phones or browsers without screen capture, record with your device and import MP4 or WebM. Camera, microphone and shared-screen audio require your browser’s permissions. Online sharing uses Supabase private file storage and a database for recording details and feedback. The app is hosted on Vercel. No AI analysis, advertising trackers or per-viewer charges are built in.

Replies and reactions

Replies are visible to everyone with the link. Names are self-entered, not verified identities. You can reply to any comment or reply. New replies reopen resolved threads. Comment authors can edit or remove their comments from the browser that posted them; the video creator can also remove comments and resolve threads. Clearing site data loses anonymous comment controls. Unsent drafts are kept in this tab’s session storage. Optional bubbles preview comments in the inline player; native fullscreen and picture in picture show the video only. Each clip supports 100 total comments and replies, including removed entries. Reactions use an anonymous browser identifier and are not verified unique-person counts.

`,'Privacy')} -function recovery(){if(recording||busy)return;shell(`
KEEP CONTROL

Take your keys with you.

A private recovery file restores the ability to stop sharing or delete your uploaded videos from another browser at this same ScreenNote address.

Back up management access

Keep this file private. Anyone with its keys can manage the uploads. It contains no video files: download videos separately.

Restore your keys

Choose a recovery file, or paste its complete JSON below. Keys are checked with the sharing service before saving. Existing local videos remain intact.

`,'Recovery');$('#recovery-file').onchange=e=>run(async()=>{const file=e.target.files[0];if(!file)return;if(file.size>524288)throw Error('Choose a recovery file smaller than 512 KB.');$('#recovery-json').value=await file.text()})} -async function restoreKeys(){const keys=recoveryKeys($('#recovery-json').value,location.origin);busy=true;const button=$('[data-action=restore-keys]');button.disabled=true;let restored=0,failed=0;try{for(const key of keys){$('#recovery-progress').textContent=`Checking key ${restored+failed+1} of ${keys.length}…`;try{const state=await api('manage',key),current=clips.find(c=>c.id===key.id);if(current&¤t.owner!==key.owner)throw Error('This recording belongs to another key.');const record={...current,...state,...key,shared:state.status==='published',revoked:['revoked','expired','deleted'].includes(state.status),uploadAttempted:true,cloudDeleted:state.cleanupComplete,managementOnly:!current?.blob};await db.put(record);clips=await db.all();restored++}catch{failed++}}$('#recovery-json').value='';$('#recovery-file').value='';$('#recovery-progress').textContent=`Restored ${restored} recording${restored===1?'':'s'}.${failed?' '+failed+' key(s) could not be verified. Keep your file and retry when sharing is available.':''} Open My recordings to manage them.`}finally{busy=false;button.disabled=false}} +function privacy(){if(recording||busy)return;shell(`
CLEAR BY DEFAULT

Your screen.
Your call.

ScreenNote only uploads a video when you choose Publish. Recording and trimming happen in your browser.

Before you publish

Recordings and recovery chunks are stored in this browser. Download videos you want to keep. Clearing site data, private browsing or losing this device can remove your local library.

After you publish

Older links from the previous storage service may be unavailable. Their videos have not been copied while that service denies access. If you have the original local video, refresh its shared status and publish a replacement link. Keep your original recovery keys.

The whole reviewed video is uploaded to private Supabase storage. An unlisted link lets anyone who has it watch and reply without a ScreenNote account. Do not include passwords or information you do not want the recipient to see. Unlisted does not mean encrypted end to end.

Links expire after 1, 3 or 7 days, as chosen before publication. Optional sharing passwords are verified on the server; issued playback URLs are bearer links with a five-minute lifetime. Captions, chapters and bug-report text you save are shared with viewers. Stop sharing blocks new viewer requests; already issued playback URLs may work for up to five more minutes. Expired uploads and abandoned reservations become eligible for deletion after a further 24 hours. ScreenNote reclaims them when new uploads reach shared capacity; cleanup is demand-driven, not a timed deletion guarantee.

Small, honest first release

Back up your recovery keys to restore management access after changing browsers or clearing site data. Keep them private: they authorize stopping sharing and deleting uploads. Videos are not included.

Clips are limited to ten minutes and 50 MB. Shared uploads use a 1 GB storage budget. Pending uploads reserve space for both chunks and the assembled video. Deleting an uploaded video frees its slot after cleanup succeeds. Old expired uploads are also reclaimed when capacity is full. Local recording and downloads remain usable when sharing is full. Hosting quotas may pause online sharing; no paid upgrade is enabled by this application.

Screen capture needs a supported desktop browser. On phones or browsers without screen capture, record with your device and import MP4 or WebM. Camera, microphone and shared-screen audio require your browser’s permissions. Online sharing uses Supabase private file storage and a database for recording details and feedback. The app is hosted on Vercel. No AI analysis, advertising trackers or per-viewer charges are built in.

Replies and reactions

Replies are visible to everyone with the link. Names are self-entered, not verified identities. You can reply to any comment or reply. New replies reopen resolved threads. Comment authors can edit or remove their comments from the browser that posted them; the video creator can also remove comments and resolve threads. Clearing site data loses anonymous comment controls. Unsent drafts are kept in this tab’s session storage. Optional bubbles preview comments in the inline player; native fullscreen and picture in picture show the video only. Each clip supports 100 total comments and replies, including removed entries. Reactions use an anonymous browser identifier and are not verified unique-person counts.

`,'Privacy')} +function recovery(){if(recording||busy)return;shell(`
KEEP CONTROL

Take your keys with you.

A private recovery file restores the ability to stop sharing or delete your uploaded videos from another browser at this same ScreenNote address.

Back up management access

Keep this file private. Anyone with its keys can manage the uploads. It contains no video files: download videos separately.

Restore your keys

Choose a recovery file, or paste its complete JSON below. Keys are checked with the sharing service before saving. Existing local videos remain intact.

`,'Recovery');$('#recovery-file').onchange=e=>run(async()=>{const file=e.target.files[0];if(!file)return;if(file.size>524288)throw Error('Choose a recovery file smaller than 512 KB.');$('#recovery-json').value=await file.text()})} +async function restoreKeys(){const keys=recoveryKeys($('#recovery-json').value,location.origin);busy=true;const button=$('[data-action=restore-keys]');button.disabled=true;let restored=0,failed=0;try{for(const key of keys){$('#recovery-progress').textContent=`Checking key ${restored+failed+1} of ${keys.length}…`;try{const state=await api('manage',key),current=clips.find(c=>c.id===key.id);if(current&¤t.owner!==key.owner)throw Error('This recording belongs to another key.');const record={...current,...state,...key,shared:state.status==='published',revoked:['revoked','expired','deleted'].includes(state.status),uploadAttempted:true,cloudDeleted:state.cleanupComplete,managementOnly:!current?.blob};if($('#restore-videos').checked&&state.status==='published'&&state.expiresAt>Date.now()&&!record.blob){const response=await fetch(await api('restore-media',key).then(v=>v.mediaUrl));if(!response.ok)throw Error('Video download failed.');const file=new File([await response.blob()],record.title+'.'+(record.type==='video/mp4'?'mp4':'webm'),{type:record.type});const media=await importMedia(file),info=await metadata(media.blob);record.blob=media.blob;Object.assign(record,info,{managementOnly:false})}await db.put(record);clips=await db.all();restored++}catch{failed++}}$('#recovery-json').value='';$('#recovery-file').value='';$('#recovery-progress').textContent=`Restored ${restored} recording${restored===1?'':'s'}.${failed?' '+failed+' key(s) could not be verified. Keep your file and retry when sharing is available.':''} Open My recordings to manage them.`}finally{busy=false;button.disabled=false}} function dialog(title,body,save,label='Save'){ const opener=document.activeElement;modal.onclose=()=>{const target=opener?.isConnected?opener:$('#main');target?.focus({preventScroll:true})}; let saving=false; @@ -64,13 +113,13 @@ function dialog(title,body,save,label='Save'){ };modal.showModal(); } async function run(fn){try{if($('#error'))$('#error').textContent='';await fn()}catch(e){error(e)}} -const actions={help,'check-sharing':checkSharing,'list-mics':listMicrophones,'begin-recording':beginRecording,'cancel-capture':cancelCapture,recovery,'acknowledge-recovery':()=>{emergencyBlob=null;if(emergencyURL)URL.revokeObjectURL(emergencyURL);emergencyURL=null;home()},'refresh-share':async()=>{const c=selected;busy=true;try{const state=await api('manage',{id:c.id,owner:c.owner});Object.assign(c,state,{shared:state.status==='published',revoked:['revoked','expired','deleted'].includes(state.status),cloudDeleted:state.cleanupComplete});await db.put(c);clips=await db.all();busy=false;editor(c);notify('Shared status refreshed.')}catch(e){if(e.status!==404)throw e;c.shared=false;c.revoked=true;c.cloudMissing=true;await db.put(c);clips=await db.all();busy=false;editor(c);notify(c.blob?'The previous upload is unavailable. Your local video is safe; publish a replacement link.':'The previous upload is unavailable. Import the original video to publish a replacement link.')}finally{busy=false}},'backup-keys':()=>{const raw=recoveryDocument(clips,location.origin);if(!JSON.parse(raw).keys.length)throw Error('No uploaded recordings need recovery keys yet.');saveFile(new Blob([raw],{type:'application/json'}),'screennote-recovery.json');notify('Recovery keys downloaded. Keep this file private; download videos separately.')},'restore-keys':restoreKeys,'delete-cloud':()=>dialog('Delete the uploaded video?',`

This permanently deletes the uploaded video and stops its shared link. ${selected.blob?'Your local file remains saved on this device.':'There is no local video file on this device.'}

`,async()=>{await api('delete',{id:selected.id,owner:selected.owner});selected.shared=false;selected.revoked=true;selected.cloudDeleted=true;await db.put(selected);clips=await db.all();editor(selected)},'Delete uploaded video'),home:()=>{if(location.pathname.startsWith('/v/'))location.assign('/');else home()},privacy,record:startRecording,stop:()=>{capture.stop();$('#record-time').textContent='Saving…';$('#pause-button').disabled=true;$('[data-action=stop]').disabled=true;},pause:()=>{paused=!paused;paused?capture.pause():capture.resume();$('#pause-button').innerHTML=icon(paused?'play':'pause')+(paused?'Resume':'Pause');$('#recording-status').textContent=paused?'PAUSED · NOT CAPTURING':'RECORDING IN PROGRESS'},theme:()=>{const theme=document.documentElement.dataset.theme==='dark'?'light':'dark';document.documentElement.dataset.theme=theme;try{localStorage.setItem('screennote-theme',theme)}catch{}},sample:async()=>{const r=await fetch('/sample.webm');if(!r.ok)throw Error('Sample clip is unavailable. Import your own video.');await importVideo(new File([await r.blob()],'A little context goes a long way.webm',{type:'video/webm'}),{sample:true})},download,publish,'copy-link':async()=>{const link=location.origin+'/v/'+selected.id;try{await navigator.clipboard.writeText(link);notify('Link copied.')}catch{dialog('Your share link',`
`,async()=>{},'Done')}},'save-title':async()=>{const c=selected,title=validTitle($('#recording-title-input').value);busy=true;try{if((c.shared||c.uploadAttempted)&&!c.cloudDeleted&&!c.cloudMissing){try{await api('title',{id:c.id,owner:c.owner,title})}catch(e){if(e.status!==404||c.shared)throw e}}c.title=title;await db.put(c);clips=await db.all();$('#title-status').textContent='Title saved.'}finally{busy=false}},rename:()=>dialog('Give it a clear title',`
`,async f=>{const title=f.get('title').trim();if(!title)throw Error('Add a title.');selected.title=title;await db.put(selected);clips=await db.all();editor(selected)}),'remove-local':()=>dialog(selected.blob?'Remove this local copy?':'Remove recovery access?',`

${selected.blob?'This removes the video from this browser.':'This removes the saved management keys from this browser.'} ${(selected.shared||selected.revoked||selected.uploadAttempted)&&!selected.cloudDeleted?'This also removes this browser’s ability to manage the uploaded video. Delete the uploaded video first if you want to remove it from the web.':selected.blob?'Download it first if you want to keep it.':'Keep an exported recovery file if you need this access later.'}

`,async()=>{await db.remove(selected.id);clips=await db.all();busy=false;home()},selected.blob?'Remove local copy':'Remove recovery access'),revoke:()=>dialog('Stop sharing this video?',`

New viewers will no longer be able to open it. Playback URLs already issued may work for up to five minutes. ${selected.blob?'Your local video stays here.':'Your recovered management keys stay here.'}

`,async()=>{await api('revoke',{id:selected.id,owner:selected.owner});selected.shared=false;selected.revoked=true;await db.put(selected);clips=await db.all();editor(selected)},'Stop sharing'),trim:async()=>{const c=selected,start=Number($('#trim-start').value),end=Number($('#trim-end').value);if(!Number.isFinite(start)||!Number.isFinite(end)||start<0||end>c.duration+.05||end-start<.25)throw Error('Choose a valid range of at least 0.25 seconds.');busy=true;$('[data-action=trim]').disabled=true;try{let blob=await trimVideo(c.blob,start,end,p=>$('#trim-progress').textContent=`Trimming locally · ${Math.round(p*100)}%`);blob=await fixed(blob,end-start);const info=await metadata(blob,end-start),copy={id:randomId(),owner:secret(),title:c.title.slice(0,85)+' · trimmed',...trimExtras(c,start,end),blob,type:blob.type.split(';')[0],createdAt:Date.now(),...info};await db.put(copy);clips=await db.all();busy=false;editor(copy);notify('Trimmed copy saved. The original is still in your library.')}finally{busy=false;const b=$('[data-action=trim]');if(b)b.disabled=false}}}; -app.addEventListener('click',e=>{const b=e.target.closest('[data-action],[data-open]');if(!b||b.disabled||busy&&b.dataset.action!=='cancel-capture')return;if((b.dataset.open||['home','help','privacy','recovery','refresh-share'].includes(b.dataset.action))&&!confirmEditorLeave())return;if(b.dataset.open){editor(clips.find(c=>c.id===b.dataset.open));return}run(()=>actions[b.dataset.action]?.())}); +const actions={'bug-report':()=>{const panel=$('.extra-panel');panel.open=true;panel.scrollIntoView({block:'nearest',behavior:'smooth'});$('#report-actual').focus()},'cancel-upload':()=>uploadController?.abort(Object.assign(Error('Upload paused. Your local copy is safe. Publish again to resume saved parts.'),{name:'AbortError'})),'new-recording':()=>{const setup=$('#record-setup');setup.open=true;setup.scrollIntoView({block:'nearest',behavior:'smooth'});(setup.querySelector('[data-action=record]:not(:disabled)')||$('#import-video')).focus()},'clear-filters':()=>{libraryFilters={query:'',status:'all',sort:'newest'};home()},help,'check-sharing':checkSharing,'list-mics':listMicrophones,'begin-recording':beginRecording,'cancel-capture':cancelCapture,recovery,'acknowledge-recovery':()=>{emergencyBlob=null;if(emergencyURL)URL.revokeObjectURL(emergencyURL);emergencyURL=null;home()},'refresh-share':async()=>{const c=selected;busy=true;try{const state=await api('manage',{id:c.id,owner:c.owner});Object.assign(c,state,{shared:state.status==='published',revoked:['revoked','expired','deleted'].includes(state.status),cloudDeleted:state.cleanupComplete});await db.put(c);clips=await db.all();busy=false;editor(c);notify('Shared status refreshed.')}catch(e){if(e.status!==404)throw e;c.shared=false;c.revoked=true;c.cloudMissing=true;await db.put(c);clips=await db.all();busy=false;editor(c);notify(c.blob?'The previous upload is unavailable. Your local video is safe; publish a replacement link.':'The previous upload is unavailable. Import the original video to publish a replacement link.')}finally{busy=false}},'backup-keys':()=>{const raw=recoveryDocument(clips,location.origin);if(!JSON.parse(raw).keys.length)throw Error('No uploaded recordings need recovery keys yet.');saveFile(new Blob([raw],{type:'application/json'}),'screennote-recovery.json');notify('Recovery keys downloaded. Keep this file private; download videos separately.')},'restore-keys':restoreKeys,'delete-cloud':()=>dialog('Delete the uploaded video?',`

This permanently deletes the uploaded video and stops its shared link. ${selected.blob?'Your local file remains saved on this device.':'There is no local video file on this device.'}

`,async()=>{await api('delete',{id:selected.id,owner:selected.owner});selected.shared=false;selected.revoked=true;selected.cloudDeleted=true;await db.put(selected);clips=await db.all();editor(selected)},'Delete uploaded video'),home:()=>{if(location.pathname.startsWith('/v/'))location.assign('/');else home()},privacy,record:startRecording,stop:()=>{capture.stop();$('#record-time').textContent='Saving…';$('#pause-button').disabled=true;$('[data-action=stop]').disabled=true;},pause:()=>{paused=!paused;paused?capture.pause():capture.resume();$('#pause-button').innerHTML=icon(paused?'play':'pause')+(paused?'Resume':'Pause');$('#recording-status').textContent=paused?'PAUSED · NOT CAPTURING':'RECORDING IN PROGRESS';$('.recording')?.classList.toggle('is-paused',paused)},theme:()=>{const theme=document.documentElement.dataset.theme==='dark'?'light':'dark';document.documentElement.dataset.theme=theme;try{localStorage.setItem('screennote-theme',theme)}catch{}},compress:async()=>{const c=selected;if(!c?.blob||c.duration>MAX_SECONDS)throw Error('Trim a clip up to 10 minutes first.');busy=true;const b=$('[data-action=compress]');b.disabled=true;try{notify('Making a smaller copy at playback speed. Keep this tab visible.');const blob=await fixed(await trimVideo(c.blob,0,c.duration,p=>$('#upload-progress').textContent=`Making smaller copy · ${Math.round(p*100)}%`,[],'saver'),c.duration),info=await metadata(blob,c.duration);if(blob.size>=c.blob.size)throw Error('This copy would not be smaller. Try trimming a shorter section instead.');const copy={...c,id:randomId(),owner:secret(),title:c.title.slice(0,80)+' · smaller',blob,...info,shared:false,revoked:false,uploadAttempted:false,passwordProtected:false,cloudDeleted:false,cloudMissing:false,createdAt:Date.now()};await db.put(copy);clips=await db.all();busy=false;editor(copy);notify(sharingProblem(copy)||'Smaller copy saved. Your original stays in your library.')}finally{busy=false;b.disabled=false}},sample:async()=>{const r=await fetch('/sample.webm');if(!r.ok)throw Error('Sample clip is unavailable. Import your own video.');await importVideo(new File([await r.blob()],'A little context goes a long way.webm',{type:'video/webm'}),{sample:true,title:'A clearer checkout · sample walkthrough'});Object.assign(selected,{captions:[{start:0,end:4,text:'Show the detail that needs attention.'},{start:4,end:9,text:'Add a timestamp so feedback points to the right moment.'},{start:9,end:15,text:'Reply, resolve and keep the work moving.'}],chapters:[{time:0,title:'Show the detail'},{time:5,title:'Pin the feedback'},{time:10,title:'Resolve the conversation'}]});await db.put(selected);editor(selected)},download,publish,'copy-link':async()=>{const link=location.origin+'/v/'+selected.id;try{await navigator.clipboard.writeText(link);notify('Link copied.')}catch{dialog('Your share link',`
`,async()=>{},'Done')}},'save-title':async()=>{const c=selected,title=validTitle($('#recording-title-input').value);busy=true;try{if((c.shared||c.uploadAttempted)&&!c.cloudDeleted&&!c.cloudMissing){try{await api('title',{id:c.id,owner:c.owner,title})}catch(e){if(e.status!==404||c.shared)throw e}}c.title=title;await db.put(c);clips=await db.all();$('#title-status').textContent='Title saved.'}finally{busy=false}},rename:()=>dialog('Give it a clear title',`
`,async f=>{const title=f.get('title').trim();if(!title)throw Error('Add a title.');selected.title=title;await db.put(selected);clips=await db.all();editor(selected)}),'remove-local':()=>dialog(selected.blob?'Remove this local copy?':'Remove recovery access?',`

${selected.blob?'This removes the video from this browser.':'This removes the saved management keys from this browser.'} ${(selected.shared||selected.revoked||selected.uploadAttempted)&&!selected.cloudDeleted?'This also removes this browser’s ability to manage the uploaded video. Delete the uploaded video first if you want to remove it from the web.':selected.blob?'Download it first if you want to keep it.':'Keep an exported recovery file if you need this access later.'}

`,async()=>{await db.remove(selected.id);clips=await db.all();busy=false;home()},selected.blob?'Remove local copy':'Remove recovery access'),revoke:()=>dialog('Stop sharing this video?',`

New viewers will no longer be able to open it. Playback URLs already issued may work for up to five minutes. ${selected.blob?'Your local video stays here.':'Your recovered management keys stay here.'}

`,async()=>{await api('revoke',{id:selected.id,owner:selected.owner});selected.shared=false;selected.revoked=true;await db.put(selected);clips=await db.all();editor(selected)},'Stop sharing'),trim:async()=>{const c=selected,start=Number($('#trim-start').value),end=Number($('#trim-end').value);if(!Number.isFinite(start)||!Number.isFinite(end)||start<0||end>c.duration+.05||end-start<.25)throw Error('Choose a valid range of at least 0.25 seconds.');busy=true;$('[data-action=trim]').disabled=true;try{let blob=await trimVideo(c.blob,start,end,p=>$('#trim-progress').textContent=`Trimming locally · ${Math.round(p*100)}%`);blob=await fixed(blob,end-start);const info=await metadata(blob,end-start),copy={id:randomId(),owner:secret(),title:c.title.slice(0,85)+' · trimmed',...trimExtras(c,start,end),blob,type:blob.type.split(';')[0],createdAt:Date.now(),...info};await db.put(copy);clips=await db.all();busy=false;editor(copy);notify('Trimmed copy saved. The original is still in your library.')}finally{busy=false;const b=$('[data-action=trim]');if(b)b.disabled=false}}}; +app.addEventListener('click',e=>{const b=e.target.closest('[data-action],[data-open],[data-rename]');if(!b||b.disabled||busy&&!['cancel-capture','cancel-upload'].includes(b.dataset.action))return;if((b.dataset.open||['home','help','privacy','recovery','refresh-share'].includes(b.dataset.action))&&!confirmEditorLeave())return;if(b.dataset.rename){const c=clips.find(c=>c.id===b.dataset.rename);dialog('Rename recording',`
`,async f=>{const title=validTitle(f.get('title'));if((c.shared||c.uploadAttempted)&&!c.cloudDeleted&&!c.cloudMissing)await api('title',{id:c.id,owner:c.owner,title});c.title=title;await db.put(c);clips=await db.all();renderLibrary()});return}if(b.dataset.open){editor(clips.find(c=>c.id===b.dataset.open));return}run(()=>actions[b.dataset.action]?.())}); window.addEventListener('beforeunload',e=>{if(recording||busy||emergencyBlob||unsavedTitle()){e.preventDefault();e.returnValue=''}}); async function viewerPage(id){try{await db.open();const local=await db.get(id);viewerOwner=local?.owner||''}catch{viewerOwner=''}try{vote=localStorage.getItem('screennote-vote-'+id)||''}catch{}app.innerHTML=`
${brand()}Make your own video ${icon('arrow')}

Opening your message…

`;try{viewData=await api('view',viewerPassword?{id,accessPassword:viewerPassword}:null,id);renderViewer()}catch(e){if(e.status===401){$('#main').innerHTML=`

A password keeps this video private.

${viewerPassword?'Password not accepted. ':''}Ask the sender for the sharing password.

`;$('#unlock-form').onsubmit=e=>{e.preventDefault();viewerPassword=$('#viewer-password').value;run(()=>viewerPage(id))};return}$('#main').innerHTML=`

This message is unavailable.

The link may have expired, stopped sharing, or the hosting service may be unavailable.

Open ScreenNote`}} function renderViewer(){ discussionUI?.destroy();const c=viewData; - $('#main').innerHTML=`
A LITTLE CONTEXT FOR YOU

${esc(isGeneratedTitle(c.title)?'Untitled recording':c.title)}

${document.pictureInPictureEnabled?'':''}
${[['like','👍','Helpful'],['thanks','🙌','Thanks'],['idea','💡','Good idea']].map(([key,emoji,label])=>``).join('')}

${formatTime(c.end-c.start)} · Link expires ${new Date(c.expiresAt).toLocaleDateString()}
Anyone with this link can see replies. Guest names are not verified.

${viewerContext(c)}
`; + $('#main').innerHTML=`
A LITTLE CONTEXT FOR YOU

${esc(isGeneratedTitle(c.title)?'Untitled recording':c.title)}

${reviewLabel(c.reviewStatus)}

${document.pictureInPictureEnabled?'':''}
${[['like','👍','Helpful'],['thanks','🙌','Thanks'],['idea','💡','Good idea']].map(([key,emoji,label])=>``).join('')}

${formatTime(c.end-c.start)} · Link expires ${new Date(c.expiresAt).toLocaleDateString()}
Anyone with this link can see replies. Guest names are not verified.

${viewerContext(c)}
`; const p=$('#viewer-player');fitPlayer(p);mountViewerContext(c,p,saveFile); $('#playback-speed').onchange=e=>p.playbackRate=Number(e.target.value); if($('#picture-in-picture'))$('#picture-in-picture').onclick=()=>run(async()=>{if(document.pictureInPictureElement)await document.exitPictureInPicture();else await p.requestPictureInPicture()}); @@ -81,7 +130,7 @@ function renderViewer(){ discussionUI=mountDiscussion({clip:c,player:p,panel:$('.reply-panel'),api,owner:viewerOwner,viewer,accessPassword:viewerPassword,update:next=>viewData=next,notify,error}); $('#refresh-replies').onclick=()=>run(async()=>{ const button=$('#refresh-replies');button.disabled=true;try{ - const next=await api('view',viewerPassword?{id:c.id,accessPassword:viewerPassword}:null,c.id);viewData=next; + const next=await api('view',viewerPassword?{id:c.id,accessPassword:viewerPassword}:null,c.id);viewData=next;$('#viewer-review').textContent=reviewLabel(next.reviewStatus);$('#viewer-review').dataset.review=next.reviewStatus||'needs-feedback'; $('#main h1').textContent=isGeneratedTitle(next.title)?'Untitled recording':next.title; const time=p.currentTime,playing=!p.paused;p.onloadedmetadata=()=>{p.currentTime=Math.max(c.start,Math.min(c.end,time));if(playing)p.play().catch(()=>{})};p.src=next.mediaUrl; discussionUI.update(next);for(const b of document.querySelectorAll('[data-reaction]'))b.querySelector('span').textContent=next.reactions[b.dataset.reaction];notify('Conversation and playback access refreshed. Your draft is kept.') @@ -92,7 +141,7 @@ function renderViewer(){ async function listMicrophones(){if(!navigator.mediaDevices?.enumerateDevices)throw Error('This browser chooses the microphone in its permission prompt.');const devices=await navigator.mediaDevices.enumerateDevices(),mics=devices.filter(d=>d.kind==='audioinput'&&d.deviceId);const select=$('#mic-source');select.innerHTML=''+mics.map((d,i)=>``).join('');notify(mics.length?'Choose your microphone source. Labels may appear only after permission is granted.':'No named inputs are available yet. Browser default will use its permission chooser.')} function markupEditor(){return `
Annotate or hide sensitive areas

Create a new video with marks burned into every frame. Your original stays unchanged and must not be shared if it contains secrets. Pause the preview, then draw fixed masks or marks. Check the new copy before publishing.

${markupTools()}

`} function mountMarkupEditor(c){const video=$('#markup-video');video.src=objectURL;fitCaptureFrame(video);const items=[];mountTools(items);$('#markup-toggle').onclick=()=>video.paused?video.play().catch(error):video.pause();$('#choose-thumbnail').onclick=()=>run(async()=>{if(video.readyState<2)throw Error('Wait for the video preview to load.');const canvas=document.createElement('canvas');canvas.width=480;canvas.height=Math.round(480*video.videoHeight/video.videoWidth);canvas.getContext('2d').drawImage(video,0,0,canvas.width,canvas.height);c.thumbnail=canvas.toDataURL('image/jpeg',.7);await db.put(c);clips=await db.all();notify('Library thumbnail updated on this device.')});$('#save-marked').onclick=()=>run(async()=>{if(!items.length)throw Error('Draw at least one mark on the preview.');busy=true;$('#save-marked').disabled=true;try{const blob=await fixed(await trimVideo(c.blob,0,c.duration,p=>$('#marked-progress').textContent=`Saving marked copy · ${Math.round(p*100)}%`,structuredClone(items)),c.duration),info=await metadata(blob,c.duration),copy={id:randomId(),owner:secret(),title:c.title.slice(0,80)+' · marked',...trimExtras(c,0,c.duration),blob,type:blob.type.split(';')[0],createdAt:Date.now(),...info};await db.put(copy);clips=await db.all();busy=false;editor(copy);notify('Marked copy saved. Review it before publishing. The original is still in your library.')}finally{busy=false;const b=$('#save-marked');if(b)b.disabled=false}})} -function help(){if(recording||busy)return;shell(`
A CLEAR FIRST MESSAGE

Show the problem.
Share the moment.

Record or import a short video, review your local copy, then publish when ready. Viewers need no account. ScreenNote is a limited free beta; no payment or subscription is enabled.

Record with confidence

  1. Use a desktop browser with screen capture, or import a device recording on mobile.
  2. Choose microphone, camera and screen audio, then choose the source in your browser.
  3. Add fixed masks and marks in setup. Begin starts a three-second countdown.
  4. Stop and review the whole video, especially any sensitive areas. Download a backup.
  5. Add optional captions, chapters or a bug report. Publish explicitly.

ScreenNote cannot silently capture a screen. Permission is required each session. If your source or audio is unavailable, choose another source or import a video.

Keyboard & playback

While recording: Alt+Shift+P pauses/resumes; Alt+Shift+S stops. In a video view: K plays/pauses, J/L seek five seconds, M toggles mute. Shortcuts do not run while typing in a field.

Native video controls provide fullscreen and captions. The viewer also has playback speed and picture in picture when the browser supports it.

Private by choice

Anyone with an unlisted link can view it unless you set a sharing password. Send that password separately. Playback links already issued can work for up to five minutes after revocation. Export management keys and download videos separately.

Free beta limits

Five minutes and 25 MB per shared video. Shared storage has a 1 GB budget across the app; smaller videos leave room for more recordings. Links expire after 1, 3 or 7 days. Capacity or hosting quotas can pause sharing; local tools remain available.

Captions are supplied by you in SRT/WebVTT format. No paid transcription service, AI analysis or advertising tracker runs here. Browser storage can be lost; keep downloads.

Help validate this beta

Try a short, non-sensitive recording. Check playback, audio, captions and feedback with your recipient. Download a local test report to share through your own channel. No personal information is required, and feedback is not sent automatically.

Real Android, iOS, Safari, tablet and native permission testing remains a release gate. This app does not promise universal browser support.

`,'Help')} +function help(){if(recording||busy)return;shell(`
A CLEAR FIRST MESSAGE

Show the problem.
Share the moment.

Record or import a short video, review your local copy, then publish when ready. Viewers need no account. ScreenNote is a limited free beta; no payment or subscription is enabled.

Record with confidence

  1. Use a desktop browser with screen capture, or import a device recording on mobile.
  2. Choose microphone, camera and screen audio, then choose the source in your browser.
  3. Add fixed masks and marks in setup. Begin starts a three-second countdown.
  4. Stop and review the whole video, especially any sensitive areas. Download a backup.
  5. Add optional captions, chapters or a bug report. Publish explicitly.

ScreenNote cannot silently capture a screen. Permission is required each session. If your source or audio is unavailable, choose another source or import a video.

Keyboard & playback

While recording: Alt+Shift+P pauses/resumes; Alt+Shift+S stops. In a video view: K plays/pauses, J/L seek five seconds, M toggles mute. Shortcuts do not run while typing in a field.

Native video controls provide fullscreen and captions. The viewer also has playback speed and picture in picture when the browser supports it.

Private by choice

Anyone with an unlisted link can view it unless you set a sharing password. Send that password separately. Playback links already issued can work for up to five minutes after revocation. Export management keys and download videos separately.

Recording & sharing limits

Local recording and import: up to 30 minutes / 250 MB. Shared video: up to 10 minutes / 50 MB. Shared storage has a 1 GB budget across the app; smaller videos leave room for more recordings. Links expire after 1, 3 or 7 days. Capacity or hosting quotas can pause sharing; local tools remain available.

Captions are supplied by you in SRT/WebVTT format. No paid transcription service, AI analysis or advertising tracker runs here. Browser storage can be lost; keep downloads.

Help validate this beta

Try a short, non-sensitive recording. Check playback, audio, captions and feedback with your recipient. Download a local test report to share through your own channel. No personal information is required, and feedback is not sent automatically.

Real Android, iOS, Safari, tablet and native permission testing remains a release gate. This app does not promise universal browser support.

`,'Help')} actions['beta-feedback']=()=>dialog('Report your test',`

Save this report locally. Nothing is sent automatically.

`,async f=>saveFile(new Blob([JSON.stringify({version:APP_VERSION,device:f.get('device'),task:f.get('task'),result:f.get('result')},null,2)],{type:'application/json'}),'screennote-beta-test.json'),'Download test report'); document.addEventListener('keydown',e=>{if(e.target.closest('input,textarea,select,[contenteditable=true]')||modal.open)return;if(busy)return;if(e.altKey&&e.shiftKey){if(capture?.begun&&recording&&e.code==='KeyP'){e.preventDefault();actions.pause()}if(capture?.begun&&recording&&e.code==='KeyS'){e.preventDefault();actions.stop()}return}if(e.ctrlKey||e.metaKey||e.altKey)return;const p=$('#viewer-player')||$('#player');if(!p)return;if(e.code==='KeyK'){e.preventDefault();p.paused?p.play().catch(()=>{}):p.pause()}else if(e.code==='KeyJ'||e.code==='KeyL'){e.preventDefault();p.currentTime=Math.min(p.duration||0,Math.max(0,p.currentTime+(e.code==='KeyJ'?-5:5)))}else if(e.code==='KeyM'){e.preventDefault();p.muted=!p.muted}}); diff --git a/public/capture.js b/public/capture.js index f8791f8..2c1672b 100644 --- a/public/capture.js +++ b/public/capture.js @@ -1,11 +1,13 @@ +import {profileFor,recordingStats} from '../lib/recording-policy.js'; +import {LOCAL_MAX_BYTES,LOCAL_MAX_SECONDS} from '../lib/rules.js'; import {paintMarkup} from './markup.js'; export function chooseMime(Recorder=globalThis.MediaRecorder){return['video/webm;codecs=vp8,opus','video/webm','video/mp4'].find(t=>Recorder?.isTypeSupported(t))||''} export function release(streams){for(const s of streams)for(const t of s?.getTracks()||[])t.stop()} export class Capture{ - constructor({chunk,finished,status,setupEnded,permissionTimeoutMs=60000}){this.permissionTimeoutMs=permissionTimeoutMs;this.permissionAbort=new AbortController();this.onSetupEnded=setupEnded;this.onchunk=chunk;this.finished=finished;this.status=status;this.streams=[];this.chunks=[];this.started=0;this.elapsed=0;this.stopping=false} - async start({camera=false,mic=true,system=false,micId='',defer=false,markup=null}){try{if(!navigator.mediaDevices?.getDisplayMedia||!globalThis.MediaRecorder)throw Error('Screen recording is not supported here. Use desktop Chrome or Edge, or import a video recorded on your device.');const Audio=globalThis.AudioContext||globalThis.webkitAudioContext;if((mic||system)&&Audio){this.audio=new Audio();this.audio.resume().catch(()=>{})}const screen=await this.requestMedia(()=>navigator.mediaDevices.getDisplayMedia({video:{frameRate:24,width:{ideal:1280},height:{ideal:720}},audio:system}));this.streams.push(screen);this.checkCancelled();let devices;if(camera||mic){devices=await this.requestMedia(()=>navigator.mediaDevices.getUserMedia({video:camera?{width:320,height:240}:false,audio:mic?(micId?{deviceId:{exact:micId}}:true):false}));this.streams.push(devices);this.checkCancelled()}let track=screen.getVideoTracks()[0];if(!track||track.readyState==='ended')throw Error('Screen sharing ended before recording started. Choose your screen again.');if(camera||markup){const screenVideo=document.createElement('video'),cameraVideo=document.createElement('video');for(const[v,s]of[[screenVideo,screen],...(camera?[[cameraVideo,devices]]:[])]){v.muted=true;v.playsInline=true;v.srcObject=s;await v.play();this.checkCancelled()}const settings=track.getSettings(),canvas=document.createElement('canvas');canvas.width=Math.min(settings.width||1280,1280);canvas.height=Math.round(canvas.width*(settings.height||720)/(settings.width||1280));const ctx=canvas.getContext('2d');this.ticker=new Worker('./ticker.js');this.ticker.onmessage=()=>{ctx.drawImage(screenVideo,0,0,canvas.width,canvas.height);if(camera){const size=Math.round(canvas.width*.18),x=canvas.width-size-24,y=canvas.height-size-24;ctx.save();ctx.beginPath();ctx.arc(x+size/2,y+size/2,size/2,0,Math.PI*2);ctx.clip();const side=Math.min(cameraVideo.videoWidth,cameraVideo.videoHeight);if(side)ctx.drawImage(cameraVideo,(cameraVideo.videoWidth-side)/2,(cameraVideo.videoHeight-side)/2,side,side,x,y,size,size);ctx.restore()}if(markup)paintMarkup(ctx,canvas.width,canvas.height,markup)};this.ticker.onmessage();const composed=canvas.captureStream(24);this.streams.push(composed);track=composed.getVideoTracks()[0]} - const audio=this.streams.slice(0,2).flatMap(s=>s.getAudioTracks());let audioTracks=[];if(audio.length){this.audio=this.audio||new Audio();await this.audio.resume();this.checkCancelled();const dest=this.audio.createMediaStreamDestination();for(const t of audio)this.audio.createMediaStreamSource(new MediaStream([t])).connect(dest);audioTracks=dest.stream.getAudioTracks();this.streams.push(dest.stream)}const output=new MediaStream([track,...audioTracks]);const mimeType=chooseMime();this.recorder=new MediaRecorder(output,{...(mimeType?{mimeType}:{}),videoBitsPerSecond:600000,audioBitsPerSecond:64000});this.recorder.ondataavailable=e=>{if(e.data.size){this.chunks.push(e.data);this.onchunk(e.data,this.seconds());const size=this.chunks.reduce((n,b)=>n+b.size,0);if(size>=24*1024*1024)this.stop()}};this.recorder.onerror=e=>{this.error=e.error||Error('Recording stopped unexpectedly.');this.stop()};this.recorder.onstop=async()=>{this.elapsed=this.seconds();this.started=0;this.cleanup();const blob=new Blob(this.chunks,{type:this.recorder.mimeType});await this.finished(blob,this.elapsed,this.error)};this.screenTrack=screen.getVideoTracks()[0];this.screenTrack.onended=()=>{if(this.begun)this.stop();else{this.cleanup();this.onSetupEnded?.()}};if(!defer)this.begin();return output}catch(e){this.cleanup();throw e}} - begin(){this.checkCancelled();if(this.begun)return;if(this.screenTrack?.readyState==='ended')throw Error('Screen sharing ended. Choose your screen again.');this.begun=true;this.started=performance.now();this.recorder.start(1000);this.timer=setInterval(()=>{this.status(this.seconds());if(this.seconds()>=300)this.stop()},250);this.status(0)} + constructor({chunk,finished,status,setupEnded,metrics=()=>{},permissionTimeoutMs=60000}){this.metrics=metrics;this.bytes=0;this.stopReason='user';this.permissionTimeoutMs=permissionTimeoutMs;this.permissionAbort=new AbortController();this.onSetupEnded=setupEnded;this.onchunk=chunk;this.finished=finished;this.status=status;this.streams=[];this.chunks=[];this.started=0;this.elapsed=0;this.stopping=false} + async start({camera=false,mic=true,system=false,micId='',defer=false,markup=null,quality='balanced',bubble={x:.8,y:.76,size:.18}}){try{this.quality=quality;this.profile=profileFor(quality);this.bubble=bubble;if(!navigator.mediaDevices?.getDisplayMedia||!globalThis.MediaRecorder)throw Error('Screen recording is not supported here. Use desktop Chrome or Edge, or import a video recorded on your device.');const Audio=globalThis.AudioContext||globalThis.webkitAudioContext;if((mic||system)&&Audio){this.audio=new Audio();this.audio.resume().catch(()=>{})}const screen=await this.requestMedia(()=>navigator.mediaDevices.getDisplayMedia({video:{frameRate:this.profile.fps,width:{ideal:this.profile.width},height:{ideal:Math.round(this.profile.width*9/16)}},audio:system}));this.streams.push(screen);this.checkCancelled();let devices;if(camera||mic){devices=await this.requestMedia(()=>navigator.mediaDevices.getUserMedia({video:camera?{width:320,height:240}:false,audio:mic?(micId?{deviceId:{exact:micId}}:true):false}));this.streams.push(devices);this.checkCancelled()}let track=screen.getVideoTracks()[0];if(!track||track.readyState==='ended')throw Error('Screen sharing ended before recording started. Choose your screen again.');if(camera||markup||track.getSettings?.().width>this.profile.width){const screenVideo=document.createElement('video'),cameraVideo=document.createElement('video');for(const[v,s]of[[screenVideo,screen],...(camera?[[cameraVideo,devices]]:[])]){v.muted=true;v.playsInline=true;v.srcObject=s;await v.play();this.checkCancelled()}const settings=track.getSettings(),canvas=document.createElement('canvas');canvas.width=Math.min(settings.width||this.profile.width,this.profile.width);canvas.height=Math.round(canvas.width*(settings.height||720)/(settings.width||1280));const ctx=canvas.getContext('2d');this.ticker=new Worker('./ticker.js');this.ticker.onmessage=()=>{ctx.drawImage(screenVideo,0,0,canvas.width,canvas.height);if(camera){const size=Math.round(Math.min(canvas.width,canvas.height)*this.bubble.size),x=Math.max(0,Math.min(canvas.width-size,canvas.width*this.bubble.x)),y=Math.max(0,Math.min(canvas.height-size,canvas.height*this.bubble.y));ctx.save();ctx.beginPath();ctx.arc(x+size/2,y+size/2,size/2,0,Math.PI*2);ctx.clip();const side=Math.min(cameraVideo.videoWidth,cameraVideo.videoHeight);if(side)ctx.drawImage(cameraVideo,(cameraVideo.videoWidth-side)/2,(cameraVideo.videoHeight-side)/2,side,side,x,y,size,size);ctx.restore()}if(markup)paintMarkup(ctx,canvas.width,canvas.height,markup)};this.ticker.onmessage();const composed=canvas.captureStream(this.profile.fps);this.streams.push(composed);track=composed.getVideoTracks()[0]} + const audio=this.streams.slice(0,2).flatMap(s=>s.getAudioTracks());let audioTracks=[];if(audio.length){this.audio=this.audio||new Audio();await this.audio.resume();this.checkCancelled();const dest=this.audio.createMediaStreamDestination();for(const t of audio)this.audio.createMediaStreamSource(new MediaStream([t])).connect(dest);audioTracks=dest.stream.getAudioTracks();this.streams.push(dest.stream)}if(mic&&devices?.getAudioTracks().length&&this.audio?.createAnalyser){this.analyser=this.audio.createAnalyser();this.analyser.fftSize=256;this.audio.createMediaStreamSource(new MediaStream(devices.getAudioTracks())).connect(this.analyser);this.levels=new Uint8Array(this.analyser.fftSize)}const output=new MediaStream([track,...audioTracks]);const mimeType=chooseMime();this.recorder=new MediaRecorder(output,{...(mimeType?{mimeType}:{}),videoBitsPerSecond:this.profile.video,audioBitsPerSecond:this.profile.audio});this.recorder.ondataavailable=e=>{if(e.data.size){this.chunks.push(e.data);this.bytes+=e.data.size;this.onchunk(e.data,this.seconds());this.report();if(this.bytes>=LOCAL_MAX_BYTES-1024*1024)this.stop('size')}};this.recorder.onerror=e=>{this.error=e.error||Error('Recording stopped unexpectedly.');this.stop('error')};this.recorder.onstop=async()=>{this.elapsed=this.seconds();this.started=0;this.cleanup();const blob=new Blob(this.chunks,{type:this.recorder.mimeType});await this.finished(blob,this.elapsed,this.error,{reason:this.stopReason,bytes:blob.size,requestedVideoBitrate:this.profile.video,actualVideoBitrate:this.recorder.videoBitsPerSecond||null,quality:this.quality})};this.screenTrack=screen.getVideoTracks()[0];this.screenTrack.onended=()=>{if(this.begun)this.stop('source');else{this.cleanup();this.onSetupEnded?.()}};if(!defer)this.begin();return output}catch(e){this.cleanup();throw e}} + begin(){this.checkCancelled();if(this.begun)return;if(this.screenTrack?.readyState==='ended')throw Error('Screen sharing ended. Choose your screen again.');this.begun=true;this.started=performance.now();this.recorder.start(1000);this.timer=setInterval(()=>{this.status(this.seconds());this.report();if(this.seconds()>=LOCAL_MAX_SECONDS)this.stop('duration')},250);this.status(0)} checkCancelled(){if(this.cancelled)throw Object.assign(Error('Recording setup cancelled.'),{name:'AbortError'})} // Invoke the native request synchronously to preserve the click's user activation. // Browsers cannot dismiss every native picker programmatically. Reject our setup @@ -25,7 +27,8 @@ export class Capture{ seconds(){return this.elapsed+(this.started?(performance.now()-this.started)/1000:0)} pause(){if(this.recorder?.state!=='recording')return;this.elapsed=this.seconds();this.started=0;this.recorder.pause()} resume(){if(this.recorder?.state!=='paused')return;this.started=performance.now();this.recorder.resume()} - stop(){if(this.stopping)return;this.stopping=true;if(this.recorder&&this.recorder.state!=='inactive')this.recorder.stop();else this.cleanup()} + report(){let level=0;if(this.analyser&&this.levels&&this.recorder?.state!=='paused'){this.analyser.getByteTimeDomainData(this.levels);level=Math.min(1,Math.sqrt(this.levels.reduce((sum,n)=>sum+((n-128)/128)**2,0)/this.levels.length)*4)}this.metrics({...recordingStats(this.bytes,this.seconds(),this.quality),level,paused:this.recorder?.state==='paused'})} + stop(reason='user'){if(this.stopping)return;this.stopReason=reason;this.stopping=true;if(this.recorder&&this.recorder.state!=='inactive')this.recorder.stop();else this.cleanup()} cleanup(){clearInterval(this.timer);this.ticker?.terminate();release(this.streams);this.audio?.close().catch(()=>{})} } -export async function trimVideo(blob,start,end,onProgress,markup=[]){const video=document.createElement('video'),url=URL.createObjectURL(blob);video.src=url;video.playsInline=true;video.muted=false;video.volume=1;let context,timer,watchdog,recorder,outputStreams=[];try{const Audio=globalThis.AudioContext||globalThis.webkitAudioContext;if(!Audio||!globalThis.MediaRecorder)throw Error('Local video processing is unavailable in this browser. Download the original or use a browser with MediaRecorder and Web Audio support.');context=new Audio();context.resume().catch(()=>{});await new Promise((resolve,reject)=>{const timeout=setTimeout(()=>reject(Error('Timed out reading the video. Try importing it again.')),10000);video.onloadedmetadata=()=>{clearTimeout(timeout);resolve()};video.onerror=()=>{clearTimeout(timeout);reject(Error('This browser cannot decode the video.'))}});if(start>0){video.currentTime=start;await new Promise((resolve,reject)=>{const timeout=setTimeout(()=>reject(Error('Could not seek to the trim start. Try another video.')),10000);video.onseeked=()=>{clearTimeout(timeout);resolve()}})}const canvas=document.createElement('canvas');canvas.width=Math.min(video.videoWidth,1280);canvas.height=Math.round(video.videoHeight*canvas.width/video.videoWidth);const ctx=canvas.getContext('2d'),stream=canvas.captureStream(24);outputStreams=[stream];await new Promise((resolve,reject)=>{const timeout=setTimeout(()=>reject(Error('Audio processing could not start. Tap Save again with this tab visible. Your original is safe.')),10000);context.resume().then(()=>{clearTimeout(timeout);resolve()},e=>{clearTimeout(timeout);reject(e)})});const source=context.createMediaElementSource(video),dest=context.createMediaStreamDestination();source.connect(dest);outputStreams=[stream,dest.stream];const tracks=[...stream.getVideoTracks(),...dest.stream.getAudioTracks()],mimeType=chooseMime();recorder=new MediaRecorder(new MediaStream(tracks),{...(mimeType?{mimeType}:{}),videoBitsPerSecond:600000,audioBitsPerSecond:64000});const chunks=[];return await new Promise((resolve,reject)=>{let done=false;let lastTime=start,lastProgress=performance.now();watchdog=setInterval(()=>{if(video.currentTime>lastTime+.01){lastTime=video.currentTime;lastProgress=performance.now()}if(performance.now()-lastProgress>15000){done=true;reject(Error('Trimming stalled. Your original is safe; keep this tab visible and try again.'))}},1000);const finish=()=>{if(done)return;done=true;video.pause();recorder.stop()};recorder.ondataavailable=e=>{if(e.data.size)chunks.push(e.data)};recorder.onstop=()=>{release([stream,dest.stream]);resolve(new Blob(chunks,{type:recorder.mimeType}))};recorder.onerror=()=>reject(Error('Could not trim this video. Your original remains unchanged.'));video.onended=finish;timer=setInterval(()=>{ctx.drawImage(video,0,0,canvas.width,canvas.height);paintMarkup(ctx,canvas.width,canvas.height,markup);onProgress(Math.min(1,(video.currentTime-start)/(end-start)));if(video.currentTime>=end)finish()},40);recorder.start(250);video.play().catch(reject)})}finally{clearInterval(timer);clearInterval(watchdog);video.pause();if(recorder&&recorder.state!=='inactive')recorder.stop();release(outputStreams);context?.close().catch(()=>{});URL.revokeObjectURL(url)}} +export async function trimVideo(blob,start,end,onProgress,markup=[],quality='balanced'){const profile=profileFor(quality);const video=document.createElement('video'),url=URL.createObjectURL(blob);video.src=url;video.playsInline=true;video.muted=false;video.volume=1;let context,timer,watchdog,recorder,outputStreams=[];try{const Audio=globalThis.AudioContext||globalThis.webkitAudioContext;if(!Audio||!globalThis.MediaRecorder)throw Error('Local video processing is unavailable in this browser. Download the original or use a browser with MediaRecorder and Web Audio support.');context=new Audio();context.resume().catch(()=>{});await new Promise((resolve,reject)=>{const timeout=setTimeout(()=>reject(Error('Timed out reading the video. Try importing it again.')),10000);video.onloadedmetadata=()=>{clearTimeout(timeout);resolve()};video.onerror=()=>{clearTimeout(timeout);reject(Error('This browser cannot decode the video.'))}});if(start>0){video.currentTime=start;await new Promise((resolve,reject)=>{const timeout=setTimeout(()=>reject(Error('Could not seek to the trim start. Try another video.')),10000);video.onseeked=()=>{clearTimeout(timeout);resolve()}})}const canvas=document.createElement('canvas');canvas.width=Math.min(video.videoWidth,profile.width);canvas.height=Math.round(video.videoHeight*canvas.width/video.videoWidth);const ctx=canvas.getContext('2d'),stream=canvas.captureStream(profile.fps);outputStreams=[stream];await new Promise((resolve,reject)=>{const timeout=setTimeout(()=>reject(Error('Audio processing could not start. Tap Save again with this tab visible. Your original is safe.')),10000);context.resume().then(()=>{clearTimeout(timeout);resolve()},e=>{clearTimeout(timeout);reject(e)})});const source=context.createMediaElementSource(video),dest=context.createMediaStreamDestination();source.connect(dest);outputStreams=[stream,dest.stream];const tracks=[...stream.getVideoTracks(),...dest.stream.getAudioTracks()],mimeType=chooseMime();recorder=new MediaRecorder(new MediaStream(tracks),{...(mimeType?{mimeType}:{}),videoBitsPerSecond:profile.video,audioBitsPerSecond:profile.audio});const chunks=[];return await new Promise((resolve,reject)=>{let done=false;let lastTime=start,lastProgress=performance.now();watchdog=setInterval(()=>{if(video.currentTime>lastTime+.01){lastTime=video.currentTime;lastProgress=performance.now()}if(performance.now()-lastProgress>15000){done=true;reject(Error('Trimming stalled. Your original is safe; keep this tab visible and try again.'))}},1000);const finish=()=>{if(done)return;done=true;video.pause();recorder.stop()};recorder.ondataavailable=e=>{if(e.data.size)chunks.push(e.data)};recorder.onstop=()=>{release([stream,dest.stream]);resolve(new Blob(chunks,{type:recorder.mimeType}))};recorder.onerror=()=>reject(Error('Could not trim this video. Your original remains unchanged.'));video.onended=finish;timer=setInterval(()=>{ctx.drawImage(video,0,0,canvas.width,canvas.height);paintMarkup(ctx,canvas.width,canvas.height,markup);onProgress(Math.min(1,(video.currentTime-start)/(end-start)));if(video.currentTime>=end)finish()},40);recorder.start(250);video.play().catch(reject)})}finally{clearInterval(timer);clearInterval(watchdog);video.pause();if(recorder&&recorder.state!=='inactive')recorder.stop();release(outputStreams);context?.close().catch(()=>{});URL.revokeObjectURL(url)}} diff --git a/public/privacy.html b/public/privacy.html index b626a6a..73587b6 100644 --- a/public/privacy.html +++ b/public/privacy.html @@ -20,13 +20,13 @@

2. What stays on your device

Recordings, drafts and your recording library stay in the app's private storage until you choose to publish. Android cloud backup is switched off for this app (allowBackup="false").

3. What is uploaded, and only when you publish

-

When you explicitly publish a link, the video file and the details needed to serve it are uploaded: title, duration, size, expiry, and any password you set. Viewers can watch, react, and leave comments or replies, which are stored with the clip. A clip is limited to 5 minutes and 25 MB, and the service runs on a shared 1 GB storage budget.

+

When you explicitly publish a link, the video file and the details needed to serve it are uploaded: title, duration, size, expiry, and any password you set. Viewers can watch, react, and leave comments or replies, which are stored with the clip. A clip is limited to 10 minutes and 50 MB, and the service runs on a shared 1 GB storage budget.

4. Names and access are not verified

Display names and reviewer identities used in discussions are not verified. Creator and author controls rely on private capability links held by whoever created the content, not on a verified account. A displayed name is not proof of identity.

5. Retention and deletion

-

Published clips expire after the window the creator chooses — 1, 3 or 7 days (7 days by default). When a creator stops sharing or deletes a published clip, media links already handed out may keep working for up to about five minutes, because links are signed to be valid for that long. Deleting the local recording does not delete a published copy; stop sharing or delete the published clip to do that. Expired, deleted and unclaimed uploads are reclaimed by the service's retention process. The app runs on third-party hosting, which keeps ordinary request logs such as IP address and browser information for its own default retention period; the app does not add analytics of its own.

+

Published clips expire after the window the creator chooses — 1, 3 or 7 days (7 days by default). When a creator stops sharing or deletes a published clip, media links already handed out may keep working for up to about ten minutes, because links are signed to be valid for that long. Deleting the local recording does not delete a published copy; stop sharing or delete the published clip to do that. Expired, deleted and unclaimed uploads are reclaimed by the service's retention process. The app runs on third-party hosting, which keeps ordinary request logs such as IP address and browser information for its own default retention period; the app does not add analytics of its own.

6. What you record, and content responsibility

You are responsible for what you record and publish, and for having the right to record and share it, including anything visible on your screen. Reviewers' comments are stored with the clip. This build has no in-app report button for a viewer; if content shows you and you want it removed, contact the person who shared the link, or raise it through the contact route in section 10.

diff --git a/public/sample.webm b/public/sample.webm index 7ba521f6a2764429d9f172903ec7618a19607496..7cf1fe1907d54c5a2ae96bb2eee5ecc3c1bf46ce 100644 GIT binary patch literal 390210 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 QI>q<%6#5kBroY_(1JG{~!~g&Q literal 348711 zcmeFYWmFx(wl3NWcXxMp4-yvc5*$Ks_u$UL-QC@tpur&!9D+k|2oNB+>&xEf?DNjP zZ;bbT-248W8r`GD?5h51*6dl;)w8}PlG-fJ7Y_>riQoM_F9Tu3uL2RogF-yaP3*

m|? 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

Your screen.
Your call.

ScreenNote only uploads a video when you choose Publish. Recording and trimming happen in your browser.

Before you publish

Recordings and recovery chunks are stored in this browser. Download videos you want to keep. Clearing site data, private browsing or losing this device can remove your local library.

After you publish

Older links from the previous storage service may be unavailable. Their videos have not been copied while that service denies access. If you have the original local video, refresh its shared status and publish a replacement link. Keep your original recovery keys.

The whole reviewed video is uploaded to private Supabase storage. An unlisted link lets anyone who has it watch and reply without a ScreenNote account. Do not include passwords or information you do not want the recipient to see. Unlisted does not mean encrypted end to end.

Links expire after 1, 3 or 7 days, as chosen before publication. Optional sharing passwords are verified on the server; issued playback URLs are bearer links with a five-minute lifetime. Captions, chapters and bug-report text you save are shared with viewers. Stop sharing blocks new viewer requests; already issued playback URLs may work for up to five more minutes. Expired uploads and abandoned reservations become eligible for deletion after a further 24 hours. ScreenNote reclaims them when new uploads reach shared capacity; cleanup is demand-driven, not a timed deletion guarantee.

Small, honest first release

Back up your recovery keys to restore management access after changing browsers or clearing site data. Keep them private: they authorize stopping sharing and deleting uploads. Videos are not included.

Clips are limited to ten minutes and 50 MB. Shared uploads use a 1 GB storage budget. Pending uploads reserve space for both chunks and the assembled video. Deleting an uploaded video frees its slot after cleanup succeeds. Old expired uploads are also reclaimed when capacity is full. Local recording and downloads remain usable when sharing is full. Hosting quotas may pause online sharing; no paid upgrade is enabled by this application.

Screen capture needs a supported desktop browser. On phones or browsers without screen capture, record with your device and import MP4 or WebM. Camera, microphone and shared-screen audio require your browser’s permissions. Online sharing uses Supabase private file storage and a database for recording details and feedback. The app is hosted on Vercel. No AI analysis, advertising trackers or per-viewer charges are built in.

Replies and reactions

Replies are visible to everyone with the link. Names are self-entered, not verified identities. You can reply to any comment or reply. New replies reopen resolved threads. Comment authors can edit or remove their comments from the browser that posted them; the video creator can also remove comments and resolve threads. Clearing site data loses anonymous comment controls. Unsent drafts are kept in this tab’s session storage. Optional bubbles preview comments in the inline player; native fullscreen and picture in picture show the video only. Each clip supports 100 total comments and replies, including removed entries. Reactions use an anonymous browser identifier and are not verified unique-person counts.

`,'Privacy')} function recovery(){if(recording||busy)return;shell(`
KEEP CONTROL

Take your keys with you.

A private recovery file restores the ability to stop sharing or delete your uploaded videos from another browser at this same ScreenNote address.

Back up management access

Keep this file private. Anyone with its keys can manage the uploads. It contains no video files: download videos separately.

Restore your keys

Choose a recovery file, or paste its complete JSON below. Keys are checked with the sharing service before saving. Existing local videos remain intact.

`,'Recovery');$('#recovery-file').onchange=e=>run(async()=>{const file=e.target.files[0];if(!file)return;if(file.size>524288)throw Error('Choose a recovery file smaller than 512 KB.');$('#recovery-json').value=await file.text()})} -async function restoreKeys(){const keys=recoveryKeys($('#recovery-json').value,location.origin);busy=true;const button=$('[data-action=restore-keys]');button.disabled=true;let restored=0,failed=0;try{for(const key of keys){$('#recovery-progress').textContent=`Checking key ${restored+failed+1} of ${keys.length}…`;try{const state=await api('manage',key),current=clips.find(c=>c.id===key.id);if(current&¤t.owner!==key.owner)throw Error('This recording belongs to another key.');const record={...current,...state,...key,shared:state.status==='published',revoked:['revoked','expired','deleted'].includes(state.status),uploadAttempted:true,cloudDeleted:state.cleanupComplete,managementOnly:!current?.blob};if($('#restore-videos').checked&&state.status==='published'&&state.expiresAt>Date.now()&&!record.blob){const response=await fetch(await api('restore-media',key).then(v=>v.mediaUrl));if(!response.ok)throw Error('Video download failed.');const file=new File([await response.blob()],record.title+'.'+(record.type==='video/mp4'?'mp4':'webm'),{type:record.type});const media=await importMedia(file),info=await metadata(media.blob);record.blob=media.blob;Object.assign(record,info,{managementOnly:false})}await db.put(record);clips=await db.all();restored++}catch{failed++}}$('#recovery-json').value='';$('#recovery-file').value='';$('#recovery-progress').textContent=`Restored ${restored} recording${restored===1?'':'s'}.${failed?' '+failed+' key(s) could not be verified. Keep your file and retry when sharing is available.':''} Open My recordings to manage them.`}finally{busy=false;button.disabled=false}} +async function restoreKeys(){const keys=recoveryKeys($('#recovery-json').value,location.origin);busy=true;const button=$('[data-action=restore-keys]');button.disabled=true;let restored=0,failed=0,videoFailed=0;try{for(const key of keys){$('#recovery-progress').textContent=`Checking key ${restored+failed+1} of ${keys.length}…`;try{const state=await api('manage',key),current=clips.find(c=>c.id===key.id);if(current&¤t.owner!==key.owner)throw Error('This recording belongs to another key.');const record={...current,...state,...key,shared:state.status==='published',revoked:['revoked','expired','deleted'].includes(state.status),uploadAttempted:true,cloudDeleted:state.cleanupComplete,managementOnly:!current?.blob};await db.put(record);clips=await db.all();if($('#restore-videos').checked&&state.status==='published'&&state.expiresAt>Date.now()&&!record.blob){try{const response=await fetch(await api('restore-media',key).then(v=>v.mediaUrl));if(!response.ok)throw Error('Video download failed.');const file=new File([await response.blob()],record.title+'.'+(record.type==='video/mp4'?'mp4':'webm'),{type:record.type});const media=await importMedia(file),info=await metadata(media.blob);record.blob=media.blob;Object.assign(record,info,{managementOnly:false})}catch{videoFailed++}}await db.put(record);clips=await db.all();restored++}catch{failed++}}$('#recovery-json').value='';$('#recovery-file').value='';$('#recovery-progress').textContent=`Restored ${restored} recording${restored===1?'':'s'}.${failed?' '+failed+' key(s) could not be verified. Keep your file and retry when sharing is available.':''} ${videoFailed?' '+videoFailed+' video download(s) could not finish; management keys were restored. Keep the recovery file to retry.':''} Open My recordings to manage them.`}finally{busy=false;button.disabled=false}} function dialog(title,body,save,label='Save'){ const opener=document.activeElement;modal.onclose=()=>{const target=opener?.isConnected?opener:$('#main');target?.focus({preventScroll:true})}; let saving=false; From d8f8b70051b63dbfa4dda9562de53e3507b4915a Mon Sep 17 00:00:00 2001 From: buttercode101 Date: Tue, 27 Oct 2026 09:23:39 +0200 Subject: [PATCH 4/7] Capture actual Android consent UI when native acceptance is blocked --- .../src/androidTest/java/com/buttercode/mobile/LaunchTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java b/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java index f3be9c5..343ed46 100644 --- a/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java +++ b/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java @@ -2,6 +2,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;import androidx.test.platform.app.InstrumentationRegistry;import androidx.test.core.app.ActivityScenario;import android.content.*;import android.graphics.Bitmap;import java.io.*;import java.util.concurrent.*;import java.util.concurrent.atomic.*;import org.junit.Test;import org.junit.runner.RunWith;import static org.junit.Assert.*; @RunWith(AndroidJUnit4.class) public class LaunchTest { private void nativeText(String text,boolean tap)throws Exception{for(int n=0;n<50;n++){android.view.accessibility.AccessibilityNodeInfo root=InstrumentationRegistry.getInstrumentation().getUiAutomation().getRootInActiveWindow();if(root!=null){java.util.List found=root.findAccessibilityNodeInfosByText(text);for(android.view.accessibility.AccessibilityNodeInfo node:found){if(node.getText()==null||!text.equalsIgnoreCase(node.getText().toString()))continue;if(!tap)return;while(node!=null&&!node.isClickable())node=node.getParent();if(node!=null&&node.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK))return;}}Thread.sleep(100);}fail("Native control unavailable: "+text);} + private String nativeTree(android.view.accessibility.AccessibilityNodeInfo n){if(n==null)return "none";StringBuilder s=new StringBuilder();s.append("["+n.getClassName()+" text="+n.getText()+" description="+n.getContentDescription()+" clickable="+n.isClickable()+"]");for(int i=0;i launch(){Context context=InstrumentationRegistry.getInstrumentation().getTargetContext();Intent intent=context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());assertNotNull(intent);return ActivityScenario.launch(intent);} private String js(ActivityScenario scenario,String expression)throws Exception{CountDownLatch ready=new CountDownLatch(1);AtomicReference value=new AtomicReference<>();scenario.onActivity(a->a.web.evaluateJavascript(expression,v->{value.set(v);ready.countDown();}));assertTrue("WebView evaluation timed out",ready.await(10,TimeUnit.SECONDS));return value.get();} private void ready(ActivityScenario scenario)throws Exception{for(int n=0;n<80;n++){String v=js(scenario,"document.readyState==='complete'&&!!document.querySelector('#app h1,#root h1')&&document.body.innerText.length>120");if("true".equals(v))return;Thread.sleep(250);}fail("The packaged app did not render usable content.");} @@ -85,7 +86,7 @@ private void saveScreenshot(ActivityScenario scenario,Context cont } if(!consent)Thread.sleep(200); } - assertTrue("Native screen-sharing consent was not completed",consent); + if(!consent){saveScreenshot(scenario,context,"capture-consent-blocked");android.view.accessibility.AccessibilityNodeInfo root=InstrumentationRegistry.getInstrumentation().getUiAutomation().getRootInActiveWindow();System.out.println("CAPTURE_CONSENT_UI "+nativeTree(root));}assertTrue("Native screen-sharing consent was not completed",consent); for(int n=0;n<60&&!ScreenRecordingService.active;n++)Thread.sleep(200); assertTrue("Native recorder did not start",ScreenRecordingService.active); String name=ScreenRecordingService.activeFileName; From 3988d81e4e2b6838ca0e9acb0c6ad75bdf0af0a9 Mon Sep 17 00:00:00 2001 From: buttercode101 Date: Tue, 27 Oct 2026 13:35:09 +0200 Subject: [PATCH 5/7] Use the observed Android 15 Start control in native capture acceptance --- .../src/androidTest/java/com/buttercode/mobile/LaunchTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java b/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java index 343ed46..615552a 100644 --- a/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java +++ b/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java @@ -82,7 +82,7 @@ private void saveScreenshot(ActivityScenario scenario,Context cont java.util.List scope=root.findAccessibilityNodeInfosByText("A single app"); if(!scope.isEmpty()){android.view.accessibility.AccessibilityNodeInfo node=scope.get(0);while(node!=null&&!node.isClickable())node=node.getParent();if(node!=null)node.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK);Thread.sleep(300);nativeText("Entire screen",true);Thread.sleep(300);} root=InstrumentationRegistry.getInstrumentation().getUiAutomation().getRootInActiveWindow(); - if(root!=null)for(String label:new String[]{"Start now","Start recording"})for(android.view.accessibility.AccessibilityNodeInfo node:root.findAccessibilityNodeInfosByText(label))if(node.getText()!=null&&label.equalsIgnoreCase(node.getText().toString())){while(node!=null&&!node.isClickable())node=node.getParent();if(node!=null&&node.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK))consent=true;} + if(root!=null)for(String label:new String[]{"Start","Start now","Start recording"})for(android.view.accessibility.AccessibilityNodeInfo node:root.findAccessibilityNodeInfosByText(label))if(node.getText()!=null&&label.equalsIgnoreCase(node.getText().toString())){while(node!=null&&!node.isClickable())node=node.getParent();if(node!=null&&node.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK))consent=true;} } if(!consent)Thread.sleep(200); } From 57b8cf2143d1fb69fceea38c93486f06e6516328 Mon Sep 17 00:00:00 2001 From: buttercode101 Date: Tue, 27 Oct 2026 13:41:28 +0200 Subject: [PATCH 6/7] Align native video exports and exercise conversion and upload interruption --- .../main/java/com/buttercode/mobile/ExportStore.java | 2 +- .../main/java/com/buttercode/mobile/OriginPolicy.java | 3 ++- .../java/com/buttercode/mobile/OriginPolicyTest.java | 1 + android/host-support.js | 2 +- tests/ui/fixture.js | 10 +++++----- tests/ui/matrix.html | 2 +- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/android/app/src/main/java/com/buttercode/mobile/ExportStore.java b/android/app/src/main/java/com/buttercode/mobile/ExportStore.java index 28584e6..981a214 100644 --- a/android/app/src/main/java/com/buttercode/mobile/ExportStore.java +++ b/android/app/src/main/java/com/buttercode/mobile/ExportStore.java @@ -6,7 +6,7 @@ final class ExportStore { String name,mime; ExportStore(File root){directory=new File(root,"exports");directory.mkdirs();} synchronized String begin(String fileName,String contentType,long size)throws IOException{ - if(output!=null)throw new IOException("Finish the current export first.");if(size<1||size>OriginPolicy.MAX_EXPORT_BYTES||!OriginPolicy.exportMime(contentType)||!contentType.matches("[a-zA-Z0-9!#$&^_.+/-]+(?:;[a-zA-Z0-9=_.+ -]+)?"))throw new IOException("Unsupported export type or size."); + if(output!=null)throw new IOException("Finish the current export first.");if(size<1||size>OriginPolicy.exportLimit(contentType)||!OriginPolicy.exportMime(contentType)||!contentType.matches("[a-zA-Z0-9!#$&^_.+/-]+(?:;[a-zA-Z0-9=_.+ -]+)?"))throw new IOException("Unsupported export type or size."); long total=0;for(File f:directory.listFiles()==null?new File[0]:directory.listFiles()){if(System.currentTimeMillis()-f.lastModified()>7L*86400000)f.delete();else total+=f.length();}if(total+size>100L*1024*1024)throw new IOException("Export cache is full. Save your files and clear the export cache from Android settings."); token=UUID.randomUUID().toString();name=OriginPolicy.safeName(fileName);mime=contentType;active=new File(directory,token+"-"+name);expected=size;written=0;sequence=0;output=new FileOutputStream(active);return token; } diff --git a/android/app/src/main/java/com/buttercode/mobile/OriginPolicy.java b/android/app/src/main/java/com/buttercode/mobile/OriginPolicy.java index 4d5516c..73616a3 100644 --- a/android/app/src/main/java/com/buttercode/mobile/OriginPolicy.java +++ b/android/app/src/main/java/com/buttercode/mobile/OriginPolicy.java @@ -4,11 +4,12 @@ import java.util.UUID; /** Native capabilities are available only to the packaged app's exact HTTPS origin. */ public final class OriginPolicy { - public static final long MAX_EXPORT_BYTES=30L*1024*1024; + public static final long MAX_EXPORT_BYTES=250_000_000L; public static boolean trusted(String candidate,String origin){try{URI u=new URI(candidate),o=new URI(origin);return "https".equals(u.getScheme())&&u.getUserInfo()==null&&u.getPort()==o.getPort()&&o.getHost()!=null&&o.getHost().equalsIgnoreCase(u.getHost());}catch(Exception e){return false;}} public static boolean recordingId(String id){try{return UUID.fromString(id).toString().equals(id);}catch(Exception e){return false;}} public static String assetPath(String path){if(path==null||path.isEmpty()||path.equals("/"))return "index.html";String p=path.startsWith("/")?path.substring(1):path;if(p.contains("..")||p.contains("\\")||p.contains("%")||p.indexOf('\0')>=0)return null;return p;} public static String safeName(String value){String clean=value==null?"export":value.replaceAll("[\\\\/:*?\"<>|\\p{Cntrl}]","_").trim();if(clean.isEmpty()||clean.equals(".")||clean.equals(".."))clean="export";return clean.substring(0,Math.min(clean.length(),120));} + public static long exportLimit(String mime){return "video/mp4".equals(mime)||"video/webm".equals(mime)?MAX_EXPORT_BYTES:30L*1024*1024;} public static boolean exportMime(String value){return value!=null&&value.length()<=100&&!value.matches("(?s).*[\\r\\n\\x00].*")&&(value.equals("application/pdf")||value.equals("application/json")||value.equals("application/octet-stream")||value.equals("video/mp4")||value.equals("video/webm")||java.util.Set.of("text/plain","text/csv","text/markdown","text/vtt").contains(value.split(";",2)[0]));} private OriginPolicy(){} } diff --git a/android/app/src/test/java/com/buttercode/mobile/OriginPolicyTest.java b/android/app/src/test/java/com/buttercode/mobile/OriginPolicyTest.java index 6a11dd9..5fad00a 100644 --- a/android/app/src/test/java/com/buttercode/mobile/OriginPolicyTest.java +++ b/android/app/src/test/java/com/buttercode/mobile/OriginPolicyTest.java @@ -4,5 +4,6 @@ public class OriginPolicyTest { @Test public void exactOriginOnly(){String o="https://contractcheck.online";assertTrue(OriginPolicy.trusted(o+"/report",o));for(String s:new String[]{"http://contractcheck.online","https://contractcheck.online.evil.test","https://contractcheck.online@evil.test","https://evil.test@contractcheck.online","https://contractcheck.online:443","file:///etc/passwd","javascript:alert(1)","null"})assertFalse(s,OriginPolicy.trusted(s,o));} @Test public void filesCannotEscapeTheirRoots(){for(String p:new String[]{"/../secret","/%2e%2e/secret","/a\\b","/a\u0000b"})assertNull(p,OriginPolicy.assetPath(p));assertEquals("index.html",OriginPolicy.assetPath("/"));assertEquals("assets/signs/stop.svg",OriginPolicy.assetPath("/assets/signs/stop.svg"));} @Test public void exportNamesAndTypesAreBounded(){assertEquals(".._private.pdf",OriginPolicy.safeName("../private.pdf"));assertTrue(OriginPolicy.safeName("x".repeat(300)).length()<=120);assertFalse(OriginPolicy.exportMime("text/html;\r\nHeader:x"));assertTrue(OriginPolicy.exportMime("application/pdf"));assertFalse(OriginPolicy.exportMime("application/vnd.android.package-archive"));} + @Test public void largeVideoExportsDoNotExpandDocumentLimits(){assertEquals(250000000L,OriginPolicy.exportLimit("video/mp4"));assertEquals(250000000L,OriginPolicy.exportLimit("video/webm"));assertEquals(30L*1024*1024,OriginPolicy.exportLimit("application/json"));} @Test public void recordingHandlesAreUnambiguous(){assertTrue(OriginPolicy.recordingId("11111111-1111-4111-8111-111111111111"));assertFalse(OriginPolicy.recordingId("../../recording"));assertFalse(OriginPolicy.recordingId("1-1-1-1-1"));} } diff --git a/android/host-support.js b/android/host-support.js index 34272af..7a38bbf 100644 --- a/android/host-support.js +++ b/android/host-support.js @@ -4,7 +4,7 @@ let sequence=0;const pending=new Map(); AppHost.onmessage=e=>{let response;try{response=JSON.parse(e.data)}catch{return}const p=pending.get(response.id);if(!p)return;clearTimeout(p.timeout);pending.delete(response.id);response.ok?p.resolve(response.data):p.reject(Error(response.error||'Native file transfer failed.'))}; function call(op,body={}){return new Promise((resolve,reject)=>{const id=String(++sequence),timeout=setTimeout(()=>{pending.delete(id);reject(Error('The Android file transfer timed out.'))},30000);pending.set(id,{resolve,reject,timeout});AppHost.postMessage(JSON.stringify({id,op,...body}))})} - async function exportUrl(url,name,mime){let token;try{const response=await fetch(url);if(!response.ok)throw Error('Could not read the exported file.');const blob=await response.blob();({token}=await call('exportBegin',{name:name||'export',mime:blob.type||mime||'application/octet-stream',size:blob.size}));let index=0;for(let offset=0;offset{});alert(e.message)}} + async function exportUrl(url,name,mime){let token;try{const response=await fetch(url);if(!response.ok)throw Error('Could not read the exported file.');const blob=await response.blob();({token}=await call('exportBegin',{name:name||'export',mime:(blob.type||mime||'application/octet-stream').split(';')[0],size:blob.size}));let index=0;for(let offset=0;offset{});alert(e.message)}} window.AndroidFiles={exportUrl};window.print=()=>call('print').catch(e=>alert(e.message));const handled=new WeakSet(); function handle(anchor){if(!anchor||!anchor.hasAttribute('download')||! /^(blob:|data:)/.test(anchor.href))return false;if(!handled.has(anchor)){handled.add(anchor);exportUrl(anchor.href,anchor.download,'application/octet-stream').finally(()=>handled.delete(anchor))}return true} const original=HTMLAnchorElement.prototype.click;HTMLAnchorElement.prototype.click=function(){if(!handle(this))return original.call(this)}; diff --git a/tests/ui/fixture.js b/tests/ui/fixture.js index 86014bb..20bbc17 100644 --- a/tests/ui/fixture.js +++ b/tests/ui/fixture.js @@ -3,7 +3,7 @@ const mode=new URLSearchParams(location.search).get('case')||'empty'; document.documentElement.dataset.qaCase=mode; const lag=Number(new URLSearchParams(location.search).get('lag'))||200; const run=new URLSearchParams(location.search).get('run')||'default'; -let healthCalls=0,reserveCalls=0,publishCalls=0; +let healthCalls=0,reserveCalls=0,publishCalls=0;const uploadedParts=new Set(); const realFetch=window.fetch.bind(window),realOpen=indexedDB.open.bind(indexedDB); const id='11111111-1111-4111-8111-111111111111',owner='a'.repeat(64); if(mode==='clipboard-failed')Object.defineProperty(navigator,'clipboard',{configurable:true,value:{writeText:async()=>{throw Error('Clipboard unavailable (QA simulation).')}}}); @@ -19,7 +19,7 @@ if(mode==='viewer-discussion'){ indexedDB.open=(name,version)=>realOpen('screennote-qa-'+mode+'-'+run+'-'+name,version); if(mode==='storage-unavailable')indexedDB.open=()=>{throw Error('Device storage is unavailable (QA simulation).')}; if(!['empty','viewer','unavailable','storage-unavailable','recording','permission','quota','permission-pending','portrait-capture'].includes(mode)){ - const blob=await(await realFetch(mediaPath)).blob(); + let blob=await(await realFetch(mediaPath)).blob();if(mode==='large-local'){blob=new Blob([blob,new Uint8Array(51_000_000-blob.size)],{type:'video/webm'});Object.assign(record,{duration:15.008,end:15.008,size:blob.size,title:'Oversized local QA recording',captions:[],chapters:[],report:null})} const db=await new Promise((resolve,reject)=>{const r=indexedDB.open('screennote',1);r.onupgradeneeded=()=>{r.result.createObjectStore('clips',{keyPath:'id'});r.result.createObjectStore('drafts',{keyPath:'id'})};r.onsuccess=()=>resolve(r.result);r.onerror=reject}); await new Promise((resolve,reject)=>{const t=db.transaction('clips','readwrite'),store=t.objectStore('clips');const r=store.get(id);r.onsuccess=()=>{if(!r.result&&mode!=='interrupted')store.put({...record,revoked:mode==='protected',blob:mode==='recovered'?undefined:blob,managementOnly:mode==='recovered',shared:['shared','recovered','clipboard-failed'].includes(mode),uploadAttempted:['shared','recovered','clipboard-failed','protected'].includes(mode)})};t.oncomplete=resolve;t.onerror=reject});if(mode==='interrupted')await new Promise((resolve,reject)=>{const t=db.transaction('drafts','readwrite');t.objectStore('drafts').put({id,createdAt:Date.now(),seconds:7.008,chunks:[blob]});t.oncomplete=resolve;t.onerror=reject});db.close(); } @@ -43,15 +43,15 @@ window.fetch=async(url,options={})=>{ const op=u.searchParams.get('op'),body=options.body?JSON.parse(options.body):{}; const json=(v,status=200)=>new Response(JSON.stringify(v),{status,headers:{'Content-Type':'application/json'}}); if(op==='health'){if(mode==='storage-suspended')return json({error:'Online sharing is unavailable. Keep or download your local copy. The site owner needs to restore sharing access.',code:'STORAGE_ACCESS_UNAVAILABLE'},503);healthCalls++;if(mode==='health-retry'&&healthCalls<=4)return json({error:'Temporary health failure (QA)'},503);return json({configured:mode!=='offline'})} - await new Promise(resolve=>setTimeout(resolve,lag)); + await new Promise((resolve,reject)=>{const signal=options.signal;if(signal?.aborted){reject(signal.reason);return}const abort=()=>{clearTimeout(timer);reject(signal.reason)};const timer=setTimeout(()=>{signal?.removeEventListener('abort',abort);resolve()},lag);signal?.addEventListener('abort',abort,{once:true})}); if(op==='view'){if(mode==='unavailable')return json({error:'This link has expired or is no longer shared.'},404);return json({...record,mediaUrl:mediaPath})} if(op==='review-status'){record.reviewStatus=body.reviewStatus;return json({reviewStatus:record.reviewStatus})}if(op==='restore-media')return json({mediaUrl:mediaPath}); if(op==='title'){if(body.owner!==owner)return json({error:'Wrong owner'},403);record.title=body.title;return json({title:body.title})} if(op==='details'){Object.assign(record,{captions:body.captions,chapters:body.chapters,report:body.report});return json(body)} - if(op==='upload-state')return json({parts:[]}); + if(op==='upload-state')return json({parts:[...uploadedParts]}); if(op==='manage')return body.owner===owner?json(record):json({error:'This browser does not have permission to manage the link.'},403); if(op==='reserve'){if(mode==='transfer-retry'&&++reserveCalls<3)return json({error:'Temporary setup failure (QA)'},503);record.passwordProtected=!!body.password;return json({id:body.id,status:'pending'},201)}; - if(op==='upload-chunk')return mode==='upload-failed'?json({error:'Upload failed (QA simulation). Your local copy is safe.'},503):json({uploaded:true}); + if(op==='upload-chunk'){if(mode!=='upload-failed')uploadedParts.add(body.part);return mode==='upload-failed'?json({error:'Upload failed (QA simulation). Your local copy is safe.'},503):json({uploaded:true})}; if(op==='publish'){if(mode==='transfer-retry'&&++publishCalls<3)return json({error:'Temporary finalization failure (QA)'},503);Object.assign(record,{...body,status:'published'});return json(record)} if(op==='revoke'){record.status='revoked';return json({revoked:true})} if(op==='delete'){record.status='deleted';record.cleanupComplete=true;return json({deleted:true})} diff --git a/tests/ui/matrix.html b/tests/ui/matrix.html index cf5d85d..e16b8f5 100644 --- a/tests/ui/matrix.html +++ b/tests/ui/matrix.html @@ -1 +1 @@ -ScreenNote full UI QA
Internal QA · simulated services and capture
+ScreenNote full UI QA
Internal QA · simulated services and capture
From 96b152757852c356750146d2b1e8a002a486fa91 Mon Sep 17 00:00:00 2001 From: buttercode101 Date: Tue, 27 Oct 2026 13:43:22 +0200 Subject: [PATCH 7/7] Stabilize Android recorder acceptance and retain emulator diagnostics --- .github/workflows/android.yml | 2 +- android/emulator-check.sh | 7 +++++++ android/gradle.properties | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 526595c..5474a06 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -46,7 +46,7 @@ jobs: target: google_apis profile: pixel_6 disable-animations: true - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + emulator-options: -no-window -gpu software -memory 2048 -cores 2 -no-snapshot -noaudio -no-boot-anim -camera-back none script: bash android/emulator-check.sh - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 if: always() diff --git a/android/emulator-check.sh b/android/emulator-check.sh index 39ed2f2..15eb00a 100755 --- a/android/emulator-check.sh +++ b/android/emulator-check.sh @@ -23,7 +23,14 @@ assert_no_system_dialog() { run_mode() { local mode="$1" result=0 quieten_launcher + adb logcat -c + adb logcat -v threadtime > "android/emulator-evidence/${mode}-logcat.txt" 2>&1 & + local log_pid=$! ./android/gradlew -p android --no-daemon connectedDebugAndroidTest || result=$? + kill "$log_pid" 2>/dev/null || true + free -m > "android/emulator-evidence/${mode}-host-memory.txt" + adb shell uiautomator dump /sdcard/window-dump.xml >/dev/null 2>&1 || true + adb pull /sdcard/window-dump.xml "android/emulator-evidence/${mode}-window.xml" >/dev/null 2>&1 || true if ! adb pull /sdcard/Pictures/AndroidAcceptance android/emulator-evidence/; then if [ "$result" = 0 ]; then return 1; fi fi diff --git a/android/gradle.properties b/android/gradle.properties index 691500e..8e65f7b 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,3 @@ -org.gradle.jvmargs=-Xmx3g -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx1536m -Dfile.encoding=UTF-8 android.useAndroidX=true android.nonTransitiveRClass=true

eU(7Q@^W}Axc>MdyXK|=?96$|{ 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≀d{xMU4 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 W>^Z_jJUFk5_TuO<*`cfYdiv:first-child{display:none}} + .import-only .option,.import-only .field,.import-only [data-action=record]{display:none} @@ -62,3 +62,15 @@ progress{width:100%;height:12px;margin-top:16px;accent-color:var(--accent)}selec .discussion-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.discussion-heading h2{font-size:23px;line-height:1.15}.discussion-heading .eyebrow{margin-bottom:8px}.count-pill{background:var(--soft);border:1px solid var(--line);border-radius:24px;min-width:36px;padding:8px;text-align:center;font-size:13px}.reply-panel{max-height:none;overflow:visible}.reply-panel #reply-form{padding:16px 0 20px}.reply-panel .field{margin-bottom:12px}.reply-panel .field textarea{min-height:100px}.compose-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}.text-button{background:none;border:0;color:var(--accent);padding:8px 6px;min-height:44px;font-size:12px;font-weight:600;text-align:left;overflow-wrap:anywhere}.text-button:hover{text-decoration:underline}.reply-context{border-left:3px solid var(--accent);background:var(--tint);padding:10px 12px;margin:0 0 14px;font-size:12px;overflow-wrap:anywhere}.reply-context strong,.reply-context span{display:block}.reply-context span{margin-top:5px;line-height:1.5}.discussion-toolbar{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line);padding:16px 0}.discussion-toolbar select{font-size:12px;min-height:44px;flex:1}.discussion-thread{border:1px solid var(--line);border-radius:10px;margin:0 0 14px;padding:0 14px;background:var(--panel)}.discussion-thread .comment{padding:14px 0}.discussion-thread .thread-reply{margin-left:12px;padding-left:12px;border-left:2px solid var(--line);border-bottom:0}.discussion-thread .comment-head{align-items:center;gap:8px;margin-bottom:6px}.comment-avatar{display:grid;place-items:center;flex:none;width:28px;height:28px;border-radius:50%;background:var(--soft);font-size:12px;font-weight:650}.comment-head strong{font-size:12px;line-height:1.5}.comment-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:5px}.comment-actions .text-button{padding-inline:2px}.creator-badge{font-size:10px;color:var(--accent);border:1px solid var(--line);padding:2px 4px;border-radius:4px;display:inline-block}.parent-reference{display:block;font-size:11px;color:var(--muted);max-width:100%;line-height:1.5;padding:4px 0;min-height:32px}.resolve-thread{width:100%;border-top:1px solid var(--line);color:var(--muted)}.is-resolved{background:var(--soft)}.resolved-label{padding-top:12px;font-size:11px;color:var(--muted);font-weight:650}.comment-selected{background:var(--tint);outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}.discussion-empty{font-size:14px;padding:20px 0}.comment-link{width:100%;padding:10px;min-width:0}.conversation-stage{position:relative}.comment-overlay{position:absolute;z-index:2;top:12px;left:12px;right:12px;pointer-events:none;display:flex;justify-content:flex-start}.moment-bubble{display:flex;align-items:flex-start;max-width:min(370px,90%);border:1px solid #ffffff55;border-radius:12px 12px 12px 3px;background:#18221def;color:#fff;box-shadow:0 4px 18px #0003;pointer-events:auto;overflow:hidden;backdrop-filter:blur(8px)}.bubble-main{display:flex;flex-direction:column;gap:5px;align-items:flex-start;background:none;color:inherit;border:0;text-align:left;padding:12px;min-width:0;min-height:44px;flex:1}.bubble-byline{font-size:11px;font-weight:650;overflow-wrap:anywhere;line-height:1.4}.bubble-byline>span{font-weight:400;color:#d1dace}.bubble-text{font-size:13px;line-height:1.45;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.bubble-hint{font-size:10px;color:#d1dace}.bubble-side{display:flex;flex-direction:column;flex:none}.bubble-side button{border:0;background:none;color:#fff;min-width:44px;min-height:44px;font-size:13px}.bubble-dismiss{font-size:24px!important}.conversation-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}.conversation-controls .btn{font-size:12px}.conversation-controls [aria-pressed=true]{background:var(--tint);border-color:var(--accent)}.comment-timeline{position:relative;height:44px;border-bottom:2px solid var(--line);margin-top:2px}.comment-timeline:before{content:'';position:absolute;left:0;right:0;top:21px;border-top:2px solid var(--line)}.moment-marker{position:absolute;left:var(--moment);transform:translateX(-50%);min-width:44px;width:44px;min-height:44px;height:44px;padding:0;background:none;border:0;color:var(--accent);display:grid;place-items:center;z-index:1}.moment-marker>span{font-size:12px;border-radius:50%;width:20px;height:20px;display:grid;place-items:center;background:var(--tint);border:1px solid var(--accent)}.moment-marker:hover>span{background:var(--accent);color:var(--panel)}.viewer-media{min-width:0}.viewer-top .icon-button{flex:none} @media(min-width:1151px){.viewer-grid{grid-template-columns:minmax(0,1.55fr) minmax(330px,1fr)}.viewer-media{position:sticky;top:20px}} @media(max-width:480px){.moment-bubble{max-width:100%}.bubble-main{padding:9px 10px;gap:3px}.comment-overlay{top:8px;left:8px;right:8px}.bubble-text{font-size:12px}.bubble-byline{font-size:10px}.bubble-hint{display:none}.discussion-thread{padding-inline:10px}.discussion-thread .thread-reply{margin-left:5px;padding-left:9px}.discussion-heading h2{font-size:21px}.panel.reply-panel{padding:16px}.discussion-toolbar select{font-size:12px}.conversation-controls .btn{flex:1;padding:8px}.comment-head .timestamp{padding:4px}.comment-avatar{width:24px;height:24px}} + +/* A focused workspace, with motion that communicates state. */ +.library-heading h1{font-size:clamp(30px,3.6vw,44px);letter-spacing:-1.5px}.library-heading{align-items:center;margin-bottom:18px}.workspace-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--muted);padding-bottom:24px}.workspace-summary .text-button{margin-left:auto}.status-dot{width:7px;height:7px;background:#518366;border-radius:50%}.library-section{margin-bottom:28px}.library-section .section-head{margin-top:18px}.library-filters{display:grid;grid-template-columns:minmax(0,1fr) 170px 150px;gap:12px}.library-filters .field{margin-bottom:0}.library-filters input,.library-filters select{min-height:44px;width:100%}.library-filters select,.record-defaults select,.advanced-recording select,.review-status-panel select{padding:10px 12px;border:1px solid var(--line);border-radius:7px;color:var(--text);background:var(--panel);font:inherit;min-width:0;max-width:100%}.library-filters+.small{margin:10px 0 16px}.record-setup{margin:20px 0 32px}.record-setup>summary{cursor:pointer;font-size:14px;font-weight:600;padding:16px 0;min-height:48px;border-top:1px solid var(--line)}.compact-recorder{grid-template-columns:minmax(0,1.25fr) minmax(240px,1fr);gap:24px}.recorder-intro{display:flex;justify-content:space-between;gap:15px;align-items:center}.recorder-intro>.svg,.recorder-intro>svg{width:32px;height:32px;color:var(--accent)}.recorder-intro .eyebrow{font-size:9px;margin-bottom:10px}.record-options .btn.primary{margin-top:8px;min-height:48px}.record-defaults{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;margin-top:12px;align-items:center}.record-defaults .option{border:0}.record-defaults .field{margin:0}.record-defaults select{font-size:13px}.advanced-recording{border-top:1px solid var(--line);margin-top:14px}.advanced-recording>summary{min-height:48px;display:list-item;padding:16px 0;cursor:pointer;font-size:12px;color:var(--muted)}.advanced-recording .field{margin-top:14px}.record-limits{font-size:11px!important;margin:12px 0 0}.record-guide{border:1px solid var(--line);border-radius:12px;background:var(--soft);padding:28px}.guide-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--dark);color:var(--light);margin-bottom:20px}.record-guide h2{font-size:25px}.record-guide ol{padding-left:20px;display:grid;gap:16px;color:var(--muted);font-size:13px;line-height:1.65;margin:20px 0}.record-guide li strong{color:var(--text)}.record-guide .btn{white-space:normal;width:100%}.clip-art{width:100%;padding:0;border:0;color:var(--text)}.card-play{position:absolute;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#fffdf2ed;color:#253c2d;opacity:0;transform:scale(.9);transition:opacity .18s,transform .18s}.clip-art:hover .card-play,.clip-art:focus-visible .card-play{opacity:1;transform:scale(1)}.card-badges{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}.clip-badge,.review-badge{font-size:10px;border-radius:5px;padding:4px 7px;background:var(--soft);color:var(--muted)}.clip-badge.shared{background:var(--tint);color:var(--accent)}.review-badge[data-review=approved]{background:#e2eee4;color:#285538}.review-badge[data-review=changes-requested]{background:#f4e5d4;color:#794619}.card-actions{display:flex;gap:8px;align-items:center;margin-top:14px}.card-actions>.btn{margin-top:0;flex:1;width:auto}.card-actions>.icon-button{flex:none}.review-status-panel{margin-top:14px}.review-status-panel label{display:block;font-size:12px;font-weight:600;margin-bottom:10px}.review-status-panel select{width:100%;font-size:13px}.review-status-panel p{margin-bottom:0}.recovery-note summary{cursor:pointer;font-weight:600}.recovery-note p{margin-bottom:0}.capture-metrics{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;background:var(--soft);padding:16px;border-radius:10px;margin:16px 0}.capture-metrics strong{font-variant-numeric:tabular-nums;margin-right:12px}.capture-metrics span{font-size:12px;color:var(--muted)}.capture-metrics p{grid-column:1/-1;font-size:12px;margin:0}.capture-metrics p:empty{display:none}.mic-meter-label{font-size:12px;display:flex;align-items:center;gap:10px}.mic-meter-label meter{width:100px}.recording .capture-frame{max-height:58vh}.recording .capture-frame video{max-height:58vh;object-fit:contain}.live-controls{position:sticky;bottom:12px;z-index:8;background:var(--panel);padding:12px 20px;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 30px #14231c16;width:fit-content;margin:12px auto}.is-live #recording-status:before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:8px;animation:record-pulse 1.6s ease-in-out infinite}.is-paused #recording-status:before{animation:none;background:var(--muted)}.is-paused .timer{color:var(--muted)}.countdown:not(:empty){padding:16px;border-radius:10px;text-align:center;background:var(--tint);color:var(--accent);font-size:26px;font-weight:650;animation:count-in .3s ease-out}.camera-handle{position:absolute;z-index:6;background:#15231b22;border:2px dashed #fff;border-radius:50%;color:white;font-size:10px;min-height:0;touch-action:none;cursor:move;display:grid;place-items:center;text-shadow:0 1px 4px black}.camera-handle:hover,.camera-handle:focus-visible{background:#15231b88}.bubble-settings{display:flex;gap:20px;align-items:center;flex-wrap:wrap;font-size:12px;margin:12px 0}.bubble-settings label{display:flex;gap:12px;align-items:center}.sample-feedback blockquote{margin-left:18px;padding-left:14px;border-left:2px solid var(--line);font-size:13px}.sample-feedback p{font-size:13px}.share-problem .btn{margin-top:12px;width:100%;white-space:normal}.btn,.icon-button{transition:background-color .18s,border-color .18s,transform .18s,box-shadow .18s}.btn:active,.icon-button:active{transform:scale(.98)}.clip-card{transition:border-color .18s,box-shadow .18s;animation:surface-in .22s ease-out}.clip-card:hover{border-color:var(--muted);box-shadow:0 4px 14px #16241b0d}dialog[open]{animation:surface-in .18s ease-out}.moment-bubble{animation:bubble-in .2s ease-out}#notice{animation:toast-in .18s ease-out}progress{accent-color:var(--accent)} +@keyframes record-pulse{0%,100%{opacity:1;box-shadow:0 0 0 0 #c4472633}50%{opacity:.55;box-shadow:0 0 0 5px #c4472600}}@keyframes count-in{from{opacity:.3;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes surface-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes bubble-in{from{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-in{from{opacity:0;margin-bottom:-5px}to{opacity:1;margin-bottom:0}} +@media(max-width:1024px){.compact-recorder{grid-template-columns:minmax(0,1fr)}.record-guide{display:none}.library-filters{grid-template-columns:minmax(0,1fr) 145px 135px}} +@media(max-width:767px){.library-heading{align-items:start}.library-heading .actions{width:100%}.library-heading .actions>.btn{flex:1}.library-heading h1{font-size:32px}.workspace-summary{font-size:11px;gap:7px;padding-bottom:8px}.workspace-summary .text-button{margin-left:0}.library-filters{grid-template-columns:1fr 1fr;gap:10px}.library-filters .field:first-child{grid-column:1/-1}.record-defaults{grid-template-columns:1fr;gap:0}.record-defaults .option{padding:14px 0}.record-defaults .field{margin-bottom:8px}.capture-metrics{grid-template-columns:1fr}.capture-metrics strong{display:block;margin-bottom:5px}.live-controls{bottom:8px;width:100%;padding:10px;gap:8px}.live-controls .btn{padding:10px}.live-controls .timer{font-size:24px;min-width:65px}.recording .capture-frame,.recording .capture-frame video{max-height:44vh}.card-play{opacity:1;transform:none;width:32px;height:32px}.review-status-panel{padding:18px}.record-setup{margin-top:12px}} +@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}} + +@media(max-width:360px){.library-filters{grid-template-columns:1fr}.library-filters .field:first-child{grid-column:auto}.library-heading .actions{flex-direction:column;align-items:stretch}.library-heading .actions>.btn{width:100%;min-height:44px}} +/* The import target stays accessible to its label without widening narrow pages. */ +.file-input.visually-hidden{position:fixed;width:1px;height:1px;left:0;top:0;padding:0;margin:0;clip-path:inset(50%);overflow:hidden} +.viewer-review{display:inline-block;margin:0 0 20px;font-size:12px} diff --git a/scripts/generate-sample.py b/scripts/generate-sample.py new file mode 100644 index 0000000..5cd7486 --- /dev/null +++ b/scripts/generate-sample.py @@ -0,0 +1,25 @@ +from PIL import Image,ImageDraw,ImageFont +from pathlib import Path +import subprocess,math +root=Path(__file__).resolve().parent.parent +font='/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf' +def f(n):return ImageFont.truetype(font,n) +# A deterministic, clearly illustrative product walkthrough; no AI imagery or real customer data. +out=subprocess.Popen(['ffmpeg','-y','-f','rawvideo','-vcodec','rawvideo','-pix_fmt','rgb24','-s','960x540','-r','20','-i','-','-f','lavfi','-i','sine=frequency=220:sample_rate=48000:duration=15','-filter:a','volume=0.03','-c:v','libvpx','-b:v','350k','-c:a','libopus','-b:a','32k','-t','15',str(root/'public/sample.webm')],stdin=subprocess.PIPE,stderr=subprocess.DEVNULL) +for n in range(300): + t=n/20;im=Image.new('RGB',(960,540),'#f7f6f2');d=ImageDraw.Draw(im) + d.rectangle((0,0,960,54),fill='#253c2d');d.text((26,16),'ScreenNote / illustrative walkthrough',font=f(17),fill='white') + step=min(2,int(t/5));titles=['Show the detail.','Pin the feedback.','Keep work moving.'] + d.text((34,80),titles[step],font=f(29),fill='#253c2d') + d.rounded_rectangle((34,132,590,448),radius=14,fill='white',outline='#dedfd7',width=2) + d.text((60,156),'CHECKOUT PREVIEW',font=f(13),fill='#6c716a');d.text((60,195),'One simple next step.',font=f(24),fill='#292c29') + for y,w in [(244,280),(270,350),(296,220)]:d.rounded_rectangle((60,y,60+w,y+10),radius=5,fill='#eeede7') + color='#c44726' if step==2 else '#b8b9ae';d.rounded_rectangle((60,348,315,400),radius=8,fill=color);d.text((95,363),'Continue to payment',font=f(16),fill='white' if step==2 else '#3c433a') + if step>=1: + d.rounded_rectangle((620,145,923,333),radius=12,fill='white',outline='#dedfd7',width=2);d.text((640,167),'0:05 Alex',font=f(15),fill='#c44726');d.text((640,202),'Could this button',font=f(18),fill='#292c29');d.text((640,229),'be clearer?',font=f(18),fill='#292c29');d.text((640,282),'Sam: Increase contrast.',font=f(14),fill='#6c716a') + if step==2: + d.rounded_rectangle((620,352,923,406),radius=8,fill='#e2eee4');d.text((640,370),'Changes ready for review',font=f(16),fill='#285538') + x=170+70*math.sin(t/2);y=370+25*math.cos(t/2);d.polygon([(x,y),(x+3,y+22),(x+9,y+16),(x+15,y+27),(x+20,y+24),(x+14,y+14),(x+23,y+12)],fill='#253c2d',outline='white') + d.rounded_rectangle((34,482,926,488),radius=3,fill='#dedfd7');d.rounded_rectangle((34,482,34+max(3,892*t/15),488),radius=3,fill='#c44726');d.text((34,507),'EXAMPLE ONLY / No customer data',font=f(11),fill='#6c716a') + out.stdin.write(im.tobytes()) +out.stdin.close();assert out.wait()==0 diff --git a/scripts/live-smoke.mjs b/scripts/live-smoke.mjs index 959d9eb..900fd0d 100644 --- a/scripts/live-smoke.mjs +++ b/scripts/live-smoke.mjs @@ -6,14 +6,15 @@ import {retryTransfer} from '../lib/transfer.js'; import {readFile} from 'node:fs/promises'; import {randomUUID,randomBytes,createHash} from 'node:crypto'; const origin=new URL(process.argv[2]).origin,bytes=await readFile(process.argv[3]); -assert.ok(bytes.length>0&&bytes.length<=25*1024*1024); +assert.ok(bytes.length>0&&bytes.length<=50_000_000); +const duration=Number(process.argv[4]||15.008); const records=[],results=[]; async function request(url,body){return await new Promise((resolve,reject)=>{const args=['--silent','--show-error','--max-time','65','--write-out','\n%{http_code}',url];if(body)args.push('-H','content-type: application/json','-H','origin: '+origin,'--data-binary','@-');const p=spawn('curl',args),out=[],err=[];p.stdout.on('data',b=>out.push(b));p.stderr.on('data',b=>err.push(b));p.on('error',reject);p.on('close',code=>{if(code)return reject(Error(Buffer.concat(err).toString()));const raw=Buffer.concat(out),split=raw.lastIndexOf(10);resolve({status:Number(raw.subarray(split+1).toString()),bytes:raw.subarray(0,split)})});p.stdin.end(body?JSON.stringify(body):undefined)})} async function call(op,body){const r=await request(origin+'/api/clip?op='+op,body);return{status:r.status,data:JSON.parse(r.bytes.toString())}} async function ok(op,body){return retryTransfer(async()=>{const r=await call(op,body);if(r.status<200||r.status>=300)throw Object.assign(Error(op+': '+r.status+' '+r.data.error),{status:r.status});return r.data})} try{ for(const protectedVideo of [false,true]){ - const c={id:randomUUID(),owner:randomBytes(32).toString('hex'),title:'Disposable ScreenNote production QA',type:'video/webm',size:bytes.length,duration:15,start:0,end:15,linkDays:1,password:protectedVideo?'synthetic QA '+randomBytes(12).toString('hex'):'',captions:[{start:0,end:3,text:'QA literal '}],chapters:[{time:0,title:'Start'},{time:5,title:'Next'}],report:{actual:'Synthetic QA only'}}; + const c={id:randomUUID(),owner:randomBytes(32).toString('hex'),title:'Disposable ScreenNote production QA',type:'video/webm',size:bytes.length,duration,start:0,end:duration,linkDays:1,password:protectedVideo?'synthetic QA '+randomBytes(12).toString('hex'):'',captions:[{start:0,end:3,text:'QA literal '}],chapters:[{time:0,title:'Start'},{time:5,title:'Next'}],report:{actual:'Synthetic QA only'}}; records.push(c);await ok('reserve',c);assert.equal((await call('manage',{id:c.id,owner:randomBytes(32).toString('hex')})).status,403); let parts=0;for(let offset=0;offsetObject.assign(Error(message),{status}); @@ -36,7 +36,7 @@ export function createGateway(client){ if(b.op==='info')out=result(await files.info(video(b.id))); else if(b.op==='sign')out=result(await files.createSignedUrl(video(b.id),300)).signedUrl; else if(b.op==='magic'){ - // The app caps videos at 25 MiB. Only return the container header to Vercel. + // The app caps shared videos at 50 MB. Only return the container header to Vercel. const blob=result(await files.download(video(b.id)));out=Array.from(new Uint8Array(await blob.slice(0,64).arrayBuffer())); }else if(b.op==='uploadPart'||b.op==='uploadSmall'){ if(typeof b.bytes!=='string'||b.bytes.length>4194304)throw fail('Invalid upload part.'); @@ -59,7 +59,7 @@ export function createGateway(client){ if(uploaded.error&&!/already exists|duplicate/i.test(uploaded.error.message))throw uploaded.error; }else if(b.op==='partsStatus'){ if(!Number.isInteger(b.size)||b.size<1||b.size>MAX_BYTES)throw fail('Invalid video size.'); - const items=result(await files.list(`screennote/${b.id}/parts`,{limit:20})); + const items=result(await files.list(`screennote/${b.id}/parts`,{limit:Math.ceil(MAX_BYTES/CHUNK_BYTES)})); out=items.filter(x=>/^(0|[1-9][0-9]*)$/.test(x.name)&&Number(x.name)Number(x.name)); }else if(b.op==='remove')result(await files.remove([video(b.id)])); else if(b.op==='clearParts'){ diff --git a/supabase/migrations/20261027070052_screennote_larger_shared_clips.sql b/supabase/migrations/20261027070052_screennote_larger_shared_clips.sql new file mode 100644 index 0000000..2437444 --- /dev/null +++ b/supabase/migrations/20261027070052_screennote_larger_shared_clips.sql @@ -0,0 +1,3 @@ +-- Keep this bucket private; raise only ScreenNote's per-file ceiling. +update storage.buckets set file_size_limit = 50000000 +where id = 'screennote-media' and public = false; diff --git a/tests/api.test.js b/tests/api.test.js index a9023af..a5519b5 100644 --- a/tests/api.test.js +++ b/tests/api.test.js @@ -1,6 +1,6 @@ import test from'node:test';import assert from'node:assert/strict';import{createHandler}from'../api/clip.js';import{randomId}from'../lib/rules.js'; const MAX_SHARED=16; -function setup(overrides={},inspect=async()=>({width:960,height:540,duration:7}),limits={maxBytes:1_000_000_000,maxClips:MAX_SHARED}){const map=new Map(),store={configured:()=>true,key:id=>'clip/'+id,media:id=>'media/'+id,read:async k=>map.has(k)?{data:structuredClone(map.get(k)),etag:'1'}:null,write:async(k,d)=>{if(map.has(k))throw Error('already exists');map.set(k,structuredClone(d))},mutate:async(k,fn,initial)=>{const d=structuredClone(map.get(k)||initial?.());if(!d)throw Object.assign(Error('Missing'),{status:404});const r=fn(d);map.set(k,d);return r??d},mediaInfo:async()=>({size:1000,contentType:'video/webm'}),mediaMagic:async()=>new Uint8Array([26,69,223,163]),mediaURL:async()=> 'https://example.test/signed-video',removeMedia:async()=>{},uploadSmall:async()=>{},uploadPart:async()=>{},assemble:async()=>{},clearParts:async()=>{}};Object.assign(store,overrides);const handler=createHandler(store,undefined,inspect,limits);async function call(op,body,method='POST',headers={host:'example.test',origin:'https://example.test'}){let status,result;const res={setHeader(){},status(n){status=n;return this},json(v){result=v;return this}};await handler({query:{op,id:body?.id},url:'/api/clip',method,headers,body},res);return{status,data:result}} +function setup(overrides={},inspect=async()=>({width:960,height:540,duration:7}),limits={maxBytes:2_000_000_000,maxClips:MAX_SHARED}){const map=new Map(),store={configured:()=>true,key:id=>'clip/'+id,media:id=>'media/'+id,read:async k=>map.has(k)?{data:structuredClone(map.get(k)),etag:'1'}:null,write:async(k,d)=>{if(map.has(k))throw Error('already exists');map.set(k,structuredClone(d))},mutate:async(k,fn,initial)=>{const d=structuredClone(map.get(k)||initial?.());if(!d)throw Object.assign(Error('Missing'),{status:404});const r=fn(d);map.set(k,d);return r??d},mediaInfo:async()=>({size:1000,contentType:'video/webm'}),mediaMagic:async()=>new Uint8Array([26,69,223,163]),mediaURL:async()=> 'https://example.test/signed-video',removeMedia:async()=>{},uploadSmall:async()=>{},uploadPart:async()=>{},assemble:async()=>{},clearParts:async()=>{}};Object.assign(store,overrides);const handler=createHandler(store,undefined,inspect,limits);async function call(op,body,method='POST',headers={host:'example.test',origin:'https://example.test'}){let status,result;const res={setHeader(){},status(n){status=n;return this},json(v){result=v;return this}};await handler({query:{op,id:body?.id},url:'/api/clip',method,headers,body},res);return{status,data:result}} return{map,store,call}} const input=()=>({id:randomId(),owner:'a'.repeat(64),title:'Message',type:'video/webm',size:1000,duration:7,start:0,end:7}); test('reserve, publish, view, react and comment form a complete API flow',async()=>{const{call}=setup(),c=input();assert.equal((await call('reserve',c)).status,201);assert.equal((await call('view',c,'GET')).status,404);assert.equal((await call('publish',c)).status,200);const view=await call('view',c,'GET');assert.equal(view.data.ownerHash,undefined);assert.ok(view.data.mediaUrl);const who=randomId();assert.equal((await call('reaction',{id:c.id,viewer:who,reaction:'like'})).data.reactions.like,1);assert.equal((await call('reaction',{id:c.id,viewer:who,reaction:'like'})).data.reactions.like,1);const comment={id:c.id,viewer:who,eventId:randomId(),text:'Looks good',time:3};assert.equal((await call('comment',comment)).data.comments.length,1);assert.equal((await call('comment',comment)).data.comments.length,1)}); @@ -164,3 +164,16 @@ test('protected discussions require password on every action and reject cross-cl for(const op of ['edit-comment','delete-comment','resolve-thread'])assert.equal((await call(op,{id:c.id,viewer,commentId:root,authorKey,text:'changed',resolved:true})).status,401); assert.equal((await call('comment',{id:c.id,viewer,eventId:randomId(),parentId:randomId(),authorKey,text:'bad parent',time:1,accessPassword:c.password})).status,409); }); +test('review status is owner-managed, validated and visible to recipients',async()=>{ + const {call}=setup(),c={...input(),reviewStatus:'needs-feedback'};await call('reserve',c);await call('publish',c); + assert.equal((await call('review-status',{id:c.id,owner:'b'.repeat(64),reviewStatus:'approved'})).status,403); + assert.equal((await call('review-status',{...c,reviewStatus:'invented'})).status,400); + assert.equal((await call('review-status',{...c,reviewStatus:'approved'})).status,200); + assert.equal((await call('view',c,'GET')).data.reviewStatus,'approved'); +}); +test('device restore media requires owner capability and an active shared recording',async()=>{ + const {call}=setup(),c={...input(),password:'long private test password'};await call('reserve',c); + assert.equal((await call('restore-media',c)).status,404);await call('publish',c); + assert.equal((await call('restore-media',{...c,owner:'b'.repeat(64)})).status,403); + assert.ok((await call('restore-media',c)).data.mediaUrl);await call('revoke',c);assert.equal((await call('restore-media',c)).status,404); +}); diff --git a/tests/capacity.test.js b/tests/capacity.test.js index b81e56e..1b47db7 100644 --- a/tests/capacity.test.js +++ b/tests/capacity.test.js @@ -8,12 +8,12 @@ test('more than sixteen small recordings fit the storage budget',()=>{ assert.equal(c.ids.length,200);assert.equal(capacityBytes(c),200*1024*1024); }); test('maximum-sized sequential uploads use available quota while allowing assembly overlap',()=>{ - const c={ids:[]};for(let i=0;i<37;i++){reserveCapacity(c,String(i),MAX_BYTES);finalizeCapacity(c,String(i),MAX_BYTES,Date.now()+86400000)} - assert.equal(c.ids.length,37);assert.throws(()=>reserveCapacity(c,'overflow',MAX_BYTES),{status:429}); + const c={ids:[]};for(let i=0;ireserveCapacity(c,'overflow',MAX_BYTES),{status:429}); assert.ok(capacityBytes(c)+MAX_BYTES<=STORAGE_BUDGET_BYTES); }); test('simultaneous pending reservations cannot overbook temporary assembly space',()=>{ - const c={ids:[]};for(let i=0;i<19;i++)reserveCapacity(c,String(i),MAX_BYTES); + const c={ids:[]};for(let i=0;ireserveCapacity(c,'overflow',MAX_BYTES),{status:429}); finalizeCapacity(c,'0',MAX_BYTES,Date.now()+86400000);releaseCapacity(c,'1');reserveCapacity(c,'next',MAX_BYTES); assert.ok(capacityBytes(c)<=STORAGE_BUDGET_BYTES); diff --git a/tests/capture.test.js b/tests/capture.test.js index a639d25..5c69b24 100644 --- a/tests/capture.test.js +++ b/tests/capture.test.js @@ -32,3 +32,6 @@ test('permission timeout releases an acquired screen and cleans up a late device accept(device);await new Promise(r=>setImmediate(r));assert.equal(device.track.stopped,true); }); }); +test('recording continues past the former 24 MiB cutoff and saves its actual stop reason',async()=>{ + const s=stream();await environment({getDisplayMedia:async()=>s},async()=>{let done;const finished=new Promise(r=>done=r),metrics=[];const c=new Capture({chunk:()=>{},status:()=>{},metrics:v=>metrics.push(v),finished:(b,d,e,diagnostics)=>done(diagnostics)});await c.start({mic:false});c.recorder.ondataavailable({data:new Blob([new Uint8Array(30_000_000)])});assert.equal(c.recorder.state,'recording');assert.equal(c.bytes,30_000_000);assert.ok(metrics.at(-1).bytes>=30_000_000);c.stop('source');const result=await finished;assert.equal(result.reason,'source');assert.equal(result.quality,'balanced');assert.ok(result.bytes>30_000_000)}); +}); diff --git a/tests/media-validation.test.js b/tests/media-validation.test.js index 5985855..f93c798 100644 --- a/tests/media-validation.test.js +++ b/tests/media-validation.test.js @@ -4,7 +4,7 @@ import {readFile} from 'node:fs/promises'; import {inspectMedia,validatePublishedMedia} from '../lib/media-validation.js'; test('real WebM, square MP4 and portrait MP4 retain tracks and measured dimensions', async () => { - for (const [path,type,duration,width,height] of [['public/sample.webm','video/webm',7.008,960,540],['tests/media/square.mp4','video/mp4',2,360,360],['tests/media/portrait.mp4','video/mp4',2,270,480]]) { + for (const [path,type,duration,width,height] of [['public/sample.webm','video/webm',15.008,960,540],['tests/media/square.mp4','video/mp4',2,360,360],['tests/media/portrait.mp4','video/mp4',2,270,480]]) { const b=await readFile(path), info=await inspectMedia(b,{type,duration,size:b.length}); assert.equal(info.width,width);assert.equal(info.height,height);assert.ok(Math.abs(info.duration-duration)<.1); } diff --git a/tests/recording-policy.test.js b/tests/recording-policy.test.js new file mode 100644 index 0000000..eee1b24 --- /dev/null +++ b/tests/recording-policy.test.js @@ -0,0 +1,25 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import {profileFor,recordingStats,sharingProblem,stopMessage} from '../lib/recording-policy.js'; +import {MAX_BYTES,MAX_SECONDS,LOCAL_MAX_BYTES,LOCAL_MAX_SECONDS} from '../lib/rules.js'; +import {filterRecordings} from '../lib/library.js'; +import {retryTransfer} from '../lib/transfer.js'; +test('local and sharing policies are separate, bounded and explicit',()=>{ + assert.ok(LOCAL_MAX_BYTES>MAX_BYTES);assert.ok(LOCAL_MAX_SECONDS>MAX_SECONDS); + assert.equal(sharingProblem({blob:{size:MAX_BYTES},duration:MAX_SECONDS}),''); + assert.match(sharingProblem({blob:{size:MAX_BYTES+1},duration:30}),/smaller copy/); + assert.match(sharingProblem({size:1000,duration:MAX_SECONDS+1}),/Trim/); + assert.match(stopMessage('size'),/250 MB/);assert.match(stopMessage('duration'),/30-minute/); +}); +test('remaining time uses observed byte growth and never goes negative',()=>{ + const s=recordingStats(30_000_000,60,'balanced');assert.equal(s.rate,500000);assert.equal(s.remaining,440);assert.equal(s.shareRemaining,40);assert.equal(s.shareable,true); + const full=recordingStats(LOCAL_MAX_BYTES+1,LOCAL_MAX_SECONDS+1);assert.equal(full.remaining,0);assert.equal(full.shareRemaining,0);assert.equal(full.shareable,false); + assert.ok(recordingStats(0,0).remaining>0);assert.equal(profileFor('unknown'),profileFor('balanced'));assert.ok(profileFor('saver').video{ + const a={id:'a',title:'Checkout',createdAt:2,blob:{}},b={id:'b',title:'Alpha',createdAt:1,shared:true,expiresAt:Date.now()+60000,reviewStatus:'approved'}; + const clips=[a,b];assert.deepEqual(filterRecordings(clips,{status:'needs-feedback'}).map(c=>c.id),['a']);assert.deepEqual(filterRecordings(clips,{query:'CHECK'}).map(c=>c.id),['a']);assert.deepEqual(filterRecordings(clips,{status:'shared'}).map(c=>c.id),['b']);assert.deepEqual(filterRecordings(clips,{sort:'title'}).map(c=>c.id),['b','a']);assert.deepEqual(clips,[a,b]); +}); +test('a deliberately paused upload is never retried',async()=>{ + let calls=0;await assert.rejects(retryTransfer(async()=>{calls++;throw Object.assign(Error('Paused'),{name:'AbortError'})}),{name:'AbortError'});assert.equal(calls,1); +}); diff --git a/tests/rules.test.js b/tests/rules.test.js index 5ce1cbf..8a5cc89 100644 --- a/tests/rules.test.js +++ b/tests/rules.test.js @@ -1,6 +1,6 @@ -import test from'node:test';import assert from'node:assert/strict';import{clipInput,commentInput,publicClip,isVideo,randomId,validId,MAX_BYTES}from'../lib/rules.js'; +import test from'node:test';import assert from'node:assert/strict';import{clipInput,commentInput,publicClip,isVideo,randomId,validId,MAX_BYTES,MAX_SECONDS}from'../lib/rules.js'; const good={title:'A clear message',type:'video/webm',duration:7,size:1000,start:0,end:7}; -test('video metadata enforces size, duration, type and trim boundaries',()=>{assert.equal(clipInput(good).end,7);for(const override of [{size:0},{size:MAX_BYTES+1},{duration:NaN},{duration:301.1},{type:'text/html'},{start:-1},{end:8},{end:0},{title:' '},{title:'a'.repeat(101)}])assert.throws(()=>clipInput({...good,...override}))}); +test('video metadata enforces size, duration, type and trim boundaries',()=>{assert.equal(clipInput(good).end,7);for(const override of [{size:0},{size:MAX_BYTES+1},{duration:NaN},{duration:MAX_SECONDS+1.1},{type:'text/html'},{start:-1},{end:8},{end:0},{title:' '},{title:'a'.repeat(101)}])assert.throws(()=>clipInput({...good,...override}))}); test('comments require valid timestamps and text, with bounded guest names',()=>{assert.equal(commentInput({text:'Useful',time:2},good).name,'Guest');for(const v of [{text:'',time:2},{text:'x',time:-1},{text:'x',time:9},{text:'x',time:'bad'},{text:'x'.repeat(501),time:2},{text:'x',time:2,name:'a'.repeat(41)}])assert.throws(()=>commentInput(v,good))}); test('public clip never reveals owner capability or anonymous voter keys',()=>{const v=publicClip({...good,id:randomId(),ownerHash:'secret',votes:{a:'like',b:'thanks',c:'like'}});assert.equal(v.ownerHash,undefined);assert.equal(v.votes,undefined);assert.deepEqual(v.reactions,{like:2,thanks:1,idea:0})}); test('container sniffing rejects mislabeled payloads',()=>{assert.equal(isVideo(new Uint8Array([26,69,223,163]),'video/webm'),true);assert.equal(isVideo(new TextEncoder().encode(''),'video/webm'),false);assert.equal(isVideo(new Uint8Array([0,0,0,12,102,116,121,112]),'video/mp4'),true)}); diff --git a/tests/supabase-store.test.js b/tests/supabase-store.test.js index d464de0..5a72909 100644 --- a/tests/supabase-store.test.js +++ b/tests/supabase-store.test.js @@ -47,7 +47,7 @@ test('storage gateway validates JSON, record paths and metadata CAS conflicts',a test('storage gateway lists only complete resumable parts and rejects oversized assembly',async()=>{ const a=gatewayFixture({files:{list:async()=>({data:[{name:'0',metadata:{size:2097152}},{name:'1',metadata:{size:10}},{name:'2',metadata:{size:12}},{name:'not-a-part'}],error:null})}}); const r=await a.call({op:'partsStatus',id,size:2097162});assert.equal(r.status,200);assert.deepEqual((await r.json()).data,[0,1]); - assert.equal((await a.call({op:'assemble',id,size:26214401,type:'video/webm'})).status,400); + assert.equal((await a.call({op:'assemble',id,size:50000001,type:'video/webm'})).status,400); }); test('storage gateway refuses a public bucket during health and does not leak database errors',async()=>{ const a=gatewayFixture({rpc:async()=>({data:null,error:{message:'sensitive internal connection'}})}); diff --git a/tests/ui/fixture.js b/tests/ui/fixture.js index 4ead474..86014bb 100644 --- a/tests/ui/fixture.js +++ b/tests/ui/fixture.js @@ -45,6 +45,7 @@ window.fetch=async(url,options={})=>{ if(op==='health'){if(mode==='storage-suspended')return json({error:'Online sharing is unavailable. Keep or download your local copy. The site owner needs to restore sharing access.',code:'STORAGE_ACCESS_UNAVAILABLE'},503);healthCalls++;if(mode==='health-retry'&&healthCalls<=4)return json({error:'Temporary health failure (QA)'},503);return json({configured:mode!=='offline'})} await new Promise(resolve=>setTimeout(resolve,lag)); if(op==='view'){if(mode==='unavailable')return json({error:'This link has expired or is no longer shared.'},404);return json({...record,mediaUrl:mediaPath})} + if(op==='review-status'){record.reviewStatus=body.reviewStatus;return json({reviewStatus:record.reviewStatus})}if(op==='restore-media')return json({mediaUrl:mediaPath}); if(op==='title'){if(body.owner!==owner)return json({error:'Wrong owner'},403);record.title=body.title;return json({title:body.title})} if(op==='details'){Object.assign(record,{captions:body.captions,chapters:body.chapters,report:body.report});return json(body)} if(op==='upload-state')return json({parts:[]}); diff --git a/vercel.json b/vercel.json index 1fb0ba8..09a9753 100644 --- a/vercel.json +++ b/vercel.json @@ -24,7 +24,7 @@ }, { "key": "Content-Security-Policy", - "value": "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' blob: data:; media-src 'self' blob: https://burrqaxylibmlkgfqlww.supabase.co https://*.blob.vercel-storage.com; connect-src 'self' https://*.blob.vercel-storage.com https://blob.vercel-storage.com; object-src 'none'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'" + "value": "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' blob: data:; media-src 'self' blob: https://burrqaxylibmlkgfqlww.supabase.co https://*.blob.vercel-storage.com; connect-src 'self' https://burrqaxylibmlkgfqlww.supabase.co https://*.blob.vercel-storage.com https://blob.vercel-storage.com; object-src 'none'; base-uri 'none'; frame-ancestors 'none'; form-action 'self'" } ] } From 1e0acdb190ad80b86a184f00e8b4a17b8f4d2c8f Mon Sep 17 00:00:00 2001 From: buttercode101 Date: Tue, 27 Oct 2026 09:08:35 +0200 Subject: [PATCH 2/7] Verify native Android recording and import beyond one minute --- .../com/buttercode/mobile/LaunchTest.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java b/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java index 99fad09..09a95a8 100644 --- a/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java +++ b/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java @@ -66,4 +66,41 @@ private void saveScreenshot(ActivityScenario scenario,Context cont } @Test public void nativeExportRequiresExactSequentialBytes()throws Exception{Context context=InstrumentationRegistry.getInstrumentation().getTargetContext();ExportStore store=new ExportStore(context.getCacheDir());String token=store.begin("invoice.pdf","application/pdf",4);try{store.chunk(token,1,"JVBERg==");fail("Out-of-order export accepted");}catch(IOException expected){}store.chunk(token,0,"JVBERg==");File file=store.finish(token);assertEquals(4,file.length());try(InputStream in=new FileInputStream(file)){assertEquals('%',in.read());}assertTrue(file.delete());store.abort();} + @androidx.test.filters.SdkSuppress(minSdkVersion=35) @Test public void nativeScreenRecordingSurvivesOneMinuteAndImports()throws Exception{ + Context context=InstrumentationRegistry.getInstrumentation().getTargetContext(); + android.content.res.Configuration cfg=context.getResources().getConfiguration(); + org.junit.Assume.assumeTrue("Long native capture runs once, in phone portrait mode",cfg.smallestScreenWidthDp<600&&cfg.orientation==android.content.res.Configuration.ORIENTATION_PORTRAIT); + try(ActivityScenario scenario=launch()){ + ready(scenario);js(scenario,"(()=>{const d=document.getElementById('record-setup');if(d)d.open=true;document.querySelector('[data-android-action=recordScreen]').click()})()"); + nativeText("Recording quality",false);nativeText("Continue",true);nativeText("Screen only",true); + // Read the actual system dialog. Android 15 offers a scope selector; choose the entire test screen. + boolean consent=false; + for(int n=0;n<50&&!consent;n++){ + android.view.accessibility.AccessibilityNodeInfo root=InstrumentationRegistry.getInstrumentation().getUiAutomation().getRootInActiveWindow(); + if(root!=null){ + java.util.List scope=root.findAccessibilityNodeInfosByText("A single app"); + if(!scope.isEmpty()){android.view.accessibility.AccessibilityNodeInfo node=scope.get(0);while(node!=null&&!node.isClickable())node=node.getParent();if(node!=null)node.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK);Thread.sleep(300);nativeText("Entire screen",true);Thread.sleep(300);} + root=InstrumentationRegistry.getInstrumentation().getUiAutomation().getRootInActiveWindow(); + if(root!=null)for(String label:new String[]{"Start now","Start recording"})for(android.view.accessibility.AccessibilityNodeInfo node:root.findAccessibilityNodeInfosByText(label))if(node.getText()!=null&&label.equalsIgnoreCase(node.getText().toString())){while(node!=null&&!node.isClickable())node=node.getParent();if(node!=null&&node.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK))consent=true;} + } + if(!consent)Thread.sleep(200); + } + assertTrue("Native screen-sharing consent was not completed",consent); + for(int n=0;n<60&&!ScreenRecordingService.active;n++)Thread.sleep(200); + assertTrue("Native recorder did not start",ScreenRecordingService.active); + String name=ScreenRecordingService.activeFileName; + // Real elapsed capture on the emulator. No synthetic MediaRecorder or file-size mocks. + Thread.sleep(65000);assertTrue("Recorder stopped before 65 seconds",ScreenRecordingService.active); + js(scenario,"document.querySelector('[data-android-action=recordScreen]').click()");nativeText("Stop recording",true); + for(int n=0;n<60&&ScreenRecordingService.active;n++)Thread.sleep(200); + File video=new File(new File(context.getFilesDir(),"recordings"),name);assertTrue(video.exists());assertTrue(video.length()>0); + android.media.MediaMetadataRetriever media=new android.media.MediaMetadataRetriever();media.setDataSource(video.getAbsolutePath());long duration=Long.parseLong(media.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_DURATION));assertTrue("Native video shorter than a minute",duration>=60000);assertNotNull(media.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));media.release(); + js(scenario,"document.querySelector('[data-android-action=openRecordings]').click()");nativeText("Recordings on this device",false); + // Import via the same WebView route the user opens, then verify a decoded, persistent local copy. + nativeText("Close",true);String id=name.substring(0,name.length()-4);scenario.onActivity(a->a.web.loadUrl(BuildConfig.APP_ORIGIN+"/?nativeRecording="+id)); + boolean imported=false;for(int n=0;n<100;n++){if("true".equals(js(scenario,"!!document.querySelector('#player')&&document.querySelector('#player').duration>=60"))){imported=true;break;}Thread.sleep(200);}assertTrue("Native video did not import into the editor",imported); + assertEquals("false",js(scenario,"document.documentElement.scrollWidth>innerWidth+2"));saveScreenshot(scenario,context,"native-recording-import"); + }finally{context.startService(new Intent(context,ScreenRecordingService.class).setAction(ScreenRecordingService.STOP));} + } + } From 1493b85dd081950f9588ee94cb3d0d1f4e18db08 Mon Sep 17 00:00:00 2001 From: buttercode101 Date: Tue, 27 Oct 2026 09:11:42 +0200 Subject: [PATCH 3/7] Preserve recovered access on download failure and verify native capture permissions --- .../androidTest/java/com/buttercode/mobile/LaunchTest.java | 4 ++-- android/play-store/listing-draft.json | 2 +- android/release-gates.json | 2 +- public/app.js | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java b/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java index 09a95a8..f3be9c5 100644 --- a/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java +++ b/android/app/src/androidTest/java/com/buttercode/mobile/LaunchTest.java @@ -25,7 +25,7 @@ private void saveScreenshot(ActivityScenario scenario,Context cont @androidx.test.filters.SdkSuppress(minSdkVersion=29) @Test public void integratedChromeTracksThemeAndDoesNotStealContentSpace()throws Exception{ Context context=InstrumentationRegistry.getInstrumentation().getTargetContext(); try(ActivityScenario scenario=launch()){ - ready(scenario); + ready(scenario);js(scenario,"(()=>{const d=document.getElementById('record-setup');if(d)d.open=true})()"); for(int n=0;n<60&&!"1".equals(js(scenario,"document.querySelectorAll('[data-android-menu]').length"));n++)Thread.sleep(100); assertEquals("1",js(scenario,"document.querySelectorAll('[data-android-menu]').length")); scenario.onActivity(a->{android.view.ViewGroup parent=(android.view.ViewGroup)a.web.getParent();assertSame("No native toolbar may sit below the product",a.web,parent.getChildAt(parent.getChildCount()-1));}); @@ -71,7 +71,7 @@ private void saveScreenshot(ActivityScenario scenario,Context cont android.content.res.Configuration cfg=context.getResources().getConfiguration(); org.junit.Assume.assumeTrue("Long native capture runs once, in phone portrait mode",cfg.smallestScreenWidthDp<600&&cfg.orientation==android.content.res.Configuration.ORIENTATION_PORTRAIT); try(ActivityScenario scenario=launch()){ - ready(scenario);js(scenario,"(()=>{const d=document.getElementById('record-setup');if(d)d.open=true;document.querySelector('[data-android-action=recordScreen]').click()})()"); + ready(scenario);context.getSharedPreferences("capture",Context.MODE_PRIVATE).edit().putBoolean("notificationsAsked",true).apply();js(scenario,"(()=>{const d=document.getElementById('record-setup');if(d)d.open=true;document.querySelector('[data-android-action=recordScreen]').click()})()"); nativeText("Recording quality",false);nativeText("Continue",true);nativeText("Screen only",true); // Read the actual system dialog. Android 15 offers a scope selector; choose the entire test screen. boolean consent=false; diff --git a/android/play-store/listing-draft.json b/android/play-store/listing-draft.json index 3f35599..3a65e1a 100644 --- a/android/play-store/listing-draft.json +++ b/android/play-store/listing-draft.json @@ -2,7 +2,7 @@ "status": "DRAFT — do not submit without release-gate review", "title": "ScreenNote", "shortDescription": "Record, review and share short videos with contextual conversations.", - "fullDescription": "ScreenNote\n\nRecord your Android screen with optional microphone audio.\nReview and trim videos before explicitly publishing a link.\nDiscuss specific moments using comments and threaded replies.\nKeep native recordings private on this device until you choose to share.\n\nThe first Android recorder supports screen-only and microphone capture, up to 5 minutes or 25 MB. System audio and camera overlays are not included. Online links use shared beta capacity and expire according to the selected period.", + "fullDescription": "ScreenNote\n\nRecord your Android screen with optional microphone audio.\nReview and trim videos before explicitly publishing a link.\nDiscuss specific moments using comments and threaded replies.\nKeep native recordings private on this device until you choose to share.\n\nThe first Android recorder supports screen-only and microphone capture, up to 30 minutes or 250 MB locally. Shared clips support up to 10 minutes and 50 MB. System audio and camera overlays are not included. Online links use shared beta capacity and expire according to the selected period.", "category": "Productivity", "supportEmail": "buttercode101@gmail.com", "privacyPolicyUrl": "https://screennote-woad.vercel.app/privacy.html", diff --git a/android/release-gates.json b/android/release-gates.json index e2568a1..6a1c25f 100644 --- a/android/release-gates.json +++ b/android/release-gates.json @@ -4,7 +4,7 @@ "packageIdStatus": "provisional until first Play upload", "targetSdk": 36, "minSdk": 26, - "versionCode": 2, + "versionCode": 4, "signedRelease": false, "physicalDeviceAcceptance": false, "playConsoleSetup": false, diff --git a/public/app.js b/public/app.js index a4ea593..0f8b06a 100644 --- a/public/app.js +++ b/public/app.js @@ -97,7 +97,7 @@ function saveFile(blob,name){const url=URL.createObjectURL(blob),a=document.crea function download(){const a=document.createElement('a');a.href=objectURL||URL.createObjectURL(selected.blob);a.download=selected.title.replace(/[^\p{L}\p{N} _-]/gu,'').slice(0,80)+(selected.type==='video/mp4'?'.mp4':'.webm');document.body.append(a);a.click();a.remove()} function privacy(){if(recording||busy)return;shell(`