af360 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +90 -90
- package/dist/.next/app-path-routes-manifest.json +20 -20
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +36 -36
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +3 -3
- package/dist/.next/server/app/ahead/page.js +1 -1
- package/dist/.next/server/app/ahead/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/ahead.html +1 -1
- package/dist/.next/server/app/ahead.rsc +4 -4
- package/dist/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/card/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/check/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/config/route.js +1 -1
- package/dist/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/connectors/github/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/consent/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/context/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/discover/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/expiry/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/first-light/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/handoff/route.js +1 -1
- package/dist/.next/server/app/api/handoff/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/incidents/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/insights/route.js +1 -1
- package/dist/.next/server/app/api/insights/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/log/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/pulse/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/radar/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/report/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/services/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/status/route.js +1 -1
- package/dist/.next/server/app/api/status/route.js.nft.json +1 -1
- package/dist/.next/server/app/api/status/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/connections/page.js +1 -1
- package/dist/.next/server/app/connections/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/connections.html +1 -1
- package/dist/.next/server/app/connections.rsc +4 -4
- package/dist/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/dashboard.html +1 -1
- package/dist/.next/server/app/dashboard.rsc +3 -3
- package/dist/.next/server/app/discoveries/page.js +2 -2
- package/dist/.next/server/app/discoveries/page.js.nft.json +1 -1
- package/dist/.next/server/app/discoveries/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/discoveries.html +1 -1
- package/dist/.next/server/app/discoveries.rsc +4 -4
- package/dist/.next/server/app/expiry/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/expiry.html +1 -1
- package/dist/.next/server/app/expiry.rsc +3 -3
- package/dist/.next/server/app/fleet/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/fleet.html +1 -1
- package/dist/.next/server/app/fleet.rsc +3 -3
- package/dist/.next/server/app/home/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/home.html +1 -1
- package/dist/.next/server/app/home.rsc +3 -3
- package/dist/.next/server/app/legal/privacy/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/legal/terms/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/log/page.js +1 -1
- package/dist/.next/server/app/log/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/log.html +1 -1
- package/dist/.next/server/app/log.rsc +4 -4
- package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/projects/page.js +1 -1
- package/dist/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/projects.html +1 -1
- package/dist/.next/server/app/projects.rsc +4 -4
- package/dist/.next/server/app/radar/page.js +2 -2
- package/dist/.next/server/app/radar/page.js.nft.json +1 -1
- package/dist/.next/server/app/radar/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/radar.html +1 -1
- package/dist/.next/server/app/radar.rsc +4 -4
- package/dist/.next/server/app/report/page.js +1 -1
- package/dist/.next/server/app/report/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/report.html +1 -1
- package/dist/.next/server/app/report.rsc +4 -4
- package/dist/.next/server/app/settings/page.js +1 -1
- package/dist/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/settings.html +1 -1
- package/dist/.next/server/app/settings.rsc +4 -4
- package/dist/.next/server/app/sites/page.js +1 -1
- package/dist/.next/server/app/sites/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/sites.html +1 -1
- package/dist/.next/server/app/sites.rsc +4 -4
- package/dist/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/welcome.html +1 -1
- package/dist/.next/server/app/welcome.rsc +4 -4
- package/dist/.next/server/app-paths-manifest.json +20 -20
- package/dist/.next/server/chunks/1155.js +1 -1
- package/dist/.next/server/chunks/2346.js +1 -1
- package/dist/.next/server/chunks/2465.js +1 -1
- package/dist/.next/server/chunks/2817.js +1 -1
- package/dist/.next/server/chunks/4134.js +1 -1
- package/dist/.next/server/chunks/7511.js +1 -1
- package/dist/.next/server/chunks/876.js +1 -0
- package/dist/.next/server/middleware-manifest.json +1 -1
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/static/chunks/1681-b233404f9ec2fc2e.js +1 -0
- package/dist/.next/static/chunks/3192-6b341d547a49fa85.js +1 -0
- package/dist/.next/static/chunks/5623-ec4f1a6f7695d8d1.js +1 -0
- package/dist/.next/static/chunks/7897-6e6c509aea495560.js +1 -0
- package/dist/.next/static/chunks/app/ahead/page-e72bed448dd40bd5.js +1 -0
- package/dist/.next/static/chunks/app/connections/page-5d6cae02e6f2b49a.js +1 -0
- package/dist/.next/static/chunks/app/discoveries/page-52696e6ee0c8d3d5.js +1 -0
- package/dist/.next/static/chunks/app/error-37987420de14c10c.js +1 -0
- package/dist/.next/static/chunks/app/log/page-45b4cfd8f1a29d09.js +1 -0
- package/dist/.next/static/chunks/app/projects/page-75a41d4a90675d93.js +1 -0
- package/dist/.next/static/chunks/app/radar/page-4b4aad549dffcd3a.js +1 -0
- package/dist/.next/static/chunks/app/report/page-145496e8f0d5bc86.js +1 -0
- package/dist/.next/static/chunks/app/settings/page-a38c457b7c57567b.js +1 -0
- package/dist/.next/static/chunks/app/sites/page-96a7dcf3c1e9aa19.js +1 -0
- package/dist/.next/static/css/94d302c686de7e23.css +1 -0
- package/dist/build-id.json +126 -126
- package/dist/package.json +1 -1
- package/dist/shell/bin/af360-bridge.exe +0 -0
- package/package.json +1 -1
- package/shell/bin/af360-bridge.exe +0 -0
- package/dist/.next/server/chunks/8748.js +0 -1
- package/dist/.next/static/chunks/3192-f33976256a7713fd.js +0 -1
- package/dist/.next/static/chunks/5449-1f71ab05b6de2699.js +0 -1
- package/dist/.next/static/chunks/7482-8061a087c022a160.js +0 -1
- package/dist/.next/static/chunks/7897-f8f2f8f462a8bbed.js +0 -1
- package/dist/.next/static/chunks/app/ahead/page-ec9c355d92be3655.js +0 -1
- package/dist/.next/static/chunks/app/connections/page-78928db455ee443e.js +0 -1
- package/dist/.next/static/chunks/app/discoveries/page-09ae376238d3c1da.js +0 -1
- package/dist/.next/static/chunks/app/error-1b4c20b17d1105f5.js +0 -1
- package/dist/.next/static/chunks/app/log/page-e54cb98e7adc6b08.js +0 -1
- package/dist/.next/static/chunks/app/projects/page-bc124fc3f5f66391.js +0 -1
- package/dist/.next/static/chunks/app/radar/page-ca0fa3338fe9ddb4.js +0 -1
- package/dist/.next/static/chunks/app/report/page-b6eef7480ac39e24.js +0 -1
- package/dist/.next/static/chunks/app/settings/page-dd56fc2e097505c7.js +0 -1
- package/dist/.next/static/chunks/app/sites/page-7becc8e4436c5016.js +0 -1
- package/dist/.next/static/css/9db3c04b1822381e.css +0 -1
- /package/dist/.next/static/{24e7279870f90176b29aa → da1c2e66999c334d135d9}/_buildManifest.js +0 -0
- /package/dist/.next/static/{24e7279870f90176b29aa → da1c2e66999c334d135d9}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=2346,exports.ids=[2346],exports.modules={72346:(a,b,c)=>{c.d(b,{UI:()=>e});var d=c(65970);let e={common:{scanning:"Scanning…",loading:"Looking around…",checking:"checking…",undo:"Undo",save:"Save",done:"Done",remove:"Remove",close:"Close",cancel:"Cancel",back:"Back",show:"Show ▾",hide:"Hide ▴",collapse:"Collapse ▴",details:"Details ▾",less:"less ▴",more:"more ▾",somethingWrong:"Something went wrong - try again."},appbar:{aria:"Estate",shortcuts:"Shortcuts",shortcutsTip:"Show the keyboard shortcuts.",roomAria:"Current room"},log:{title:"Log",purpose:"Everything af360 has recorded on this machine, newest first.",filterAll:"All",filterAgents:"Agents",filterConnections:"Connections",filterClosed:"Resolved",untaggedNote:"af360 tags three kinds of entry: an agent asked something, a connection changed, a risk ended. Everything else is an untagged line. All shows everything.",dayToday:"Today",dayYesterday:"Yesterday",floor:"Seven days is as far back as this record goes.",empty:"af360 has not written anything down yet - scans, site checks and agent questions all land here."},shell:{clockSkew:d.lt.at,clockSkewCore:d.lt.core,navAria:"Main",modeAria:"Mode",themeAria:"Look",moreGroup:"More",railAria:"Live",modeSimple:"Simple",modeDev:"Dev",themeDay:"Day",themeNight:"Night",guardianSoon:"soon",footBy:"by",footBrand:"Afeleos",footLine:"Your files stay on your machine.",railLive:"Live",railLog:"Log \xb7 7 days",railLogUnknown:"Log",railLogSince:a=>`Log \xb7 since ${a}`,railLogSinceTime:a=>`Log \xb7 since ${a}`,railLogTruncated:a=>`Log \xb7 since ${a} \xb7 limit reached`,railLogUnreadable:a=>`${a} ${1===a?"entry":"entries"} could not be read`,railLogEmpty:"Log \xb7 nothing yet",railNext:"Next",railConfigFault:"I can't read your settings",railConfigFaultSub:"so I don't know what to watch",railQuiet:"quiet so far",railQuietSub:"incidents and scans land here",railNoEvents:"no incidents yet",railNoEventsSub:"scans land here",railNoRecord:"nothing recorded yet",railNoRecordSub:"af360 hasn't finished a scan",railOlder:"everything older is in the Log",railSwept:"git status swept",railMissing:"still missing",railNextSiteCheck:"site check",railNextScan:"folder scan",railNextSsl:"SSL judgment"},roomError:{invite:"This room didn't open",line:"Something in this room went wrong, so af360 stopped drawing it rather than show you something half-built. af360 has not judged the other rooms from here.",fixLead:"What to do:",fixRetry:"Try the room again. If it keeps failing, the other rooms will tell you whether they are working.",retry:"Try again"},configFault:{invite:"I can't read your settings",line:"Your settings file is where it should be, but I can't read it, so I don't know what you asked me to watch. I have not changed or written over it.",whereLabel:"The file is here:",fixLead:"What usually fixes it:",fixOpen:"Open the file and check it is complete - a half-written or hand-edited file is the usual cause.",fixRestore:"If you keep backups, restore your last good copy over it.",fixRename:"Or rename the file. af360 will start fresh, and your old one stays on disk for you to look at.",retry:"Try again",recovered:"Your settings file could not be read. af360 restored the previous copy."},radar:{title:"Radar",purpose:"what needs you right now, in one place",scanNow:"Scan now",shareReport:"Share a report",shareReportTip:"A tidy file of what needs attention, to share or paste into an AI",looked:"looked",needsYou:"Needs you",projects:"Projects",projectsMeta:"checking backups, unsaved work, activity",watchMore:"Watch more folders",sites:"Sites",sitesMeta:"checked every minute while af360 is running",discoveries:"Discoveries",discoveriesMeta:"what the estate is quietly telling you",discoveriesTop3:"showing the top 3",ignored:"Ignored",ignoredLabel:"Ignored",ignoredStrip:a=>`Ignored: ${a}`,ignoredMeta:"still scanned - they resurface only if things change",watchAgain:"Watch again",stillIgnore:"Still ignore",findIt:"Find it",stopWatching:"Stop watching",stopWatchingFolder:"Stop watching this folder",stopWatchingSite:"Stop watching this site",ignore:"Ignore",ignoreIt:"Ignore it",keepWatching:"Keep watching",later:"Later",check:"Check",handled:"handled ✓",folder:"Folder",copyPath:"Copy path",copyAddress:"Copy address",copied:"Copied ✓",copyFailed:"Couldn't copy",whatISaw:"What I saw",worthDoing:"Worth doing",viewGrid:"Grid",viewRows:"Rows",viewAria:"How to show this section",pin:"Pin to top",pinLabel:"Pin",ignoreLabel:"Ignore",unpin:"Unpin",emptyInvite:"Nothing to watch yet - which makes this the perfect starting line.",emptyLine:"af360 keeps an eye on the folders you work in and the websites you own, and tells you when one of them needs you - work that has no copy anywhere, a site that stops answering, a renewal creeping up.",emptyPickFolder:"Choose a folder to watch",emptyPickSite:"Watch a website",emptySomeday:"Building something someday? af360 will be ready - it costs nothing to keep around.",emptyBack:"Back",sitePlaceholder:"yoursite.com",siteNamePlaceholder:"a name for it (optional)",siteAddrAria:"Website address",siteNameAria:"Name for this website",siteAdd:"Watch it",siteAdding:"Adding…",siteAdded:"Watching it. af360 checks it every minute while it is running.",firstCheck:"first check under way…",historyBuilds:"history builds",sparkAria:"Response time, last 24 hours",proposals:"Worth watching",proposalsMeta:"found in your own project files",proposalNamedIn:"named in {0} - line {1}",proposalIn:"in {0}",proposalChanged:"you set this aside when it was named in {0}; it is named in {1} now",proposalNotThis:"Not this one",proposalSetAside:"Set aside. af360 won't ask again unless the evidence changes.",seeAll:a=>`See all ${a} discoveries →`,needsYouAlways:"all shown, always \xb7 ordered by consequence",tagLosable:"losable",tagMoney:"money",tagHygiene:"hygiene",moreActions:"More",moreActionsAria:"More actions for this finding",effIgnore:"hide until it changes",effLater:"resurfaces tomorrow",effStillIgnore:"keep it hidden",effStopWatching:"removed from af360 only",effPin:"keep on top",effUnpin:"back in normal order",fix:"Fix",ignoredStill:"still scanned \xb7 resurfaces on change",ignoredShow:"Show",ignoredHide:"Hide",seeAllProjects:a=>`See all ${a} projects →`,seeAllSites:a=>`See all ${a} sites →`,moreCleanBacked:a=>`and ${a} more with nothing needing you`,moreClean:a=>`and ${a} more, all clean`,moreProjects:a=>`and ${a} more on the Projects page`,moreSitesUp:a=>`and ${a} more with nothing needing you`,moreSites:a=>`and ${a} more on the Sites page`,bannerLead:"This is a",bannerStrong:"sample estate",bannerRest:"so you can see everything working - try Check, Ignore, and Later.",bannerLink:"Point af360 at your real projects",bannerTail:"and it becomes yours.",ignoredToast:"Ignored {0} - it's not gone, it moved to the Ignored line under Needs you (still scanned).",confirmProject:"This project isn't fully backed up. Ignore anyway? I'll stop mentioning it.",confirmProjectShort:"This project isn't backed up. Ignore anyway? I'll stop mentioning it.",confirmSite:"This site is down right now. Ignore anyway? I'll stop mentioning it.",movedTail:"moved - pick its new home. The old entry is replaced."},unread:{reason:"a scan that did not finish",what:a=>`af360 could not finish reading ${a}.`,evidence:"git did not answer for this folder, so nothing below is a verdict",why:"af360 will not guess - it would rather say it could not look than tell you something untrue.",step:"Nothing to do: the next scan tries again. If it keeps saying this, the folder or git itself is the thing to check."},session:{verdictHint:"click to see them",verdictJumpAria:"Show the work that would be lost",wereIn:"You were in",uncommitted:a=>`${a} file${1===a?"":"s"}`,uncommittedTail:"uncommitted",clean:"clean",lastCommit:"last commit",touched:"touched",noRecent:"Nothing recent - your estate is below",subline:"most recent activity across your watched folders",copyPath:"Copy path",copyContext:"Copy project brief",copyContextShort:"Copy project brief",copying:"Assembling…",copied:"Copied ✓",copyFailed:"Couldn't copy",copyHandoff:"Copy for your agent",handoffCopied:"Copied: what needs doing, the commands for each, and what a dead disk would cost. Secrets masked.",fix:"Fix",fixHeadingWhat:"What is happening",fixHeadingSteps:"What to do",fixHeadingCommands:"Commands",copyCommands:"Copy commands",commandsCopied:"Commands copied ✓",briefToast:a=>`Copied: ${a.join(", ")}.`,briefFailed:"Couldn't assemble the brief - try again.",briefRedacted:"secrets left out",actSave:a=>`Save ${a}`,actPush:a=>`Push ${a}`,actBackUp:a=>`Back up ${a}`,actDuplicate:a=>`Decide on ${a}'s duplicate`,actSiteDown:a=>`${a} is down`,actRenew:a=>`Renew ${a}`,actCertLate:a=>`Chase ${a}'s certificate`,actFind:a=>`Find ${a}`,actDecide:a=>`Decide on ${a}`,actOffline:"Check this machine's connection"},stream:{starting:"still looking - the deeper checks are starting, results land here as they finish",counting:(a,b)=>`still looking - ${a} of ${b} deeper check${1===b?"":"s"} done, results land here as they finish`,railWatchedNothing:a=>`watched since ${a} - nothing has changed`,railScan:(a,b)=>`scanning ${a} folder${1===a?"":"s"}${b>0?` \xb7 ${b} site${1===b?"":"s"}`:""} \xb7 deeper checks next`},keys:{title:"Keyboard shortcuts",sub:"They do not fire while you are typing in a box - except Escape, which always closes what is open.",close:"Close",aria:"Keyboard shortcuts",rooms:"Go to a room",actions:"Do something",goRadar:"Radar",goDiscoveries:"Discoveries",goReport:"Estate Report",goAhead:"Ahead",goSettings:"Settings",doScan:"Scan now",doCopy:"Copy the project brief for the project you were in",doHelp:"Show this list",doEsc:"Close this list",copiedToast:"Project brief copied - paste it into an assistant.",noProject:"af360 has no current project to copy context for."},discoveries:{title:"Discoveries",purpose:"what af360 noticed about the estate, in one place",backToRadar:"Back to Radar",loading:"Looking for discoveries…",emptyInvite:"No discoveries yet.",emptyLine:"Watch some folders on Radar and the estate starts telling you things - unpushed work, forgotten costs, sites worth a look.",goRadar:"Go to Radar",bannerLead:"Sample discoveries -",bannerLink:"point af360 at your real projects",bannerTail:"and these become yours.",mutedTitle:"Muted in Settings, so not running",failedTitle:"Didn't finish this time",failedTail:"Anything these would have found is missing from this page. The next scan tries again.",unmute:"Unmute in Settings →",found:"Found:",worth:"Worth doing:",showMe:"Show me ▾",seeCard:"See the card it sends ▾",fixSteps:"Fix steps",whatISaw:"What I saw",ogBare:"No title, no description, no image - the link shows up naked.",ogNoTitle:"(no title)",stillLooking:a=>`still looking - ${a} deeper check${1===a?"":"s"} running, results land here`,cat:{"time-capsule":"Time capsule",safety:"Safety",money:"Money",identity:"Identity",health:"Health and housekeeping",site:"Your sites"}},projects:{title:"Projects",purpose:"every folder af360 watches, all on one page",backToRadar:"Back to Radar",needing:a=>`${a} need${1===a?"s":""} you, the rest are clean`,allClean:"all clean",emptyInvite:"No projects watched yet.",emptyLine:"Point af360 at a folder on Radar and everything inside it appears here.",goRadar:"Go to Radar"},sites:{title:"Sites",purpose:"every site af360 watches, all on one page",backToRadar:"Back to Radar",checking:"Checking your sites…",answering:(a,b)=>`${a} of ${b} answering`,emptyInvite:"No sites watched yet.",emptyLine:"Add a site on Radar and af360 checks it every minute while it runs.",goRadar:"Go to Radar",groupYours:"Your sites",unitSite:"site",unitSites:"sites",newGroup:"New group",groupNameAria:"Group name",groupNamePlaceholder:"Client work",createGroup:"Create",removeGroup:"Delete group",removeGroupNote:"The sites in it move back to Your sites. None of them are removed.",fileIn:"Group",groupServices:"Services you depend on",servicesPurpose:"af360 asks each of these one question: did it answer? None of af360's site checks run here.",svcAnswered:"af360 asked, and it answered.",svcErrorReply:"af360 asked, and the reply was an error.",svcNoAnswer:"af360 asked, and got no answer.",svcAsking:"af360 is asking…",svcNotTheWorld:"This is what happened when af360 asked, from this machine. It is not a report on the service.",svcViaStatus:"af360 asks its published status page.",svcViaHome:"It publishes no status page, so af360 asks its home page.",removeService:"Remove",servicesNoPresets:"af360 has no service presets yet.",addService:"Add a service",servicesNoneAdded:"af360 contacts nothing here until you add it."},card:{heroLabel:"lines of code across {0} projects",heroSub:"Counted on this machine, not from an API.",gridHead:"Twelve weeks of commits",statLanguages:"Languages",statAge:"Estate age",statCommits:"Commits, twelve weeks to today",statClean:"Clean",statReadProjects:"Repositories read",statBusiestDay:"Busiest day",statBusiestProject:"Busiest project, {0}",emptyEstate:"Nothing measured yet.",statBranches:"Local branches",capped:"Measured across the {0} projects af360 read.",seal:"Measured on this machine \xb7 build {0}",sealNoBuild:"Measured on this machine \xb7 no build fingerprint",foot:"af360 by Afeleos",button:"Save the card"},report:{title:"Estate Report",purpose:"the whole picture in one look, kept on this machine",heading:"Your estate, at a glance",asOf:"as of",sub:"The whole picture in one look. This stays on your machine; your personal view - Share a report makes the file meant for others.",download:"Save as image",downloadText:"Save as text",vNeeding:a=>`need${1===a?"s":""} your attention`,vClean:"clean and backed up",vSites:"sites answering",rightNow:"Right now",rUnsaved:"Unsaved work at risk",rUnsavedVal:(a,b)=>`${a} project${1===a?"":"s"}, ${b} change${1===b?"":"s"}`,rNone:"none ✓",rUnpushed:"Commits only on this machine",rUnpushedVal:(a,b)=>`${a}, in ${b} project${1===b?"":"s"}`,rEverythingElse:"Everything else",rBackedUp:"backed up ✓",rNoBackup:"No copy anywhere but here",rNoBackupVal:a=>`${a} project${1===a?"":"s"}`,rSites:"Sites",rSitesAllUp:"all up, no incidents",rSitesUpNow:"all up right now",rSitesDown:a=>`${a} not answering`,rNext:"Next date to know",dateIn:(a,b)=>`${a} in ${b}d`,inNumbers:"Your estate in numbers",langAria:"Share of your code by language",langRest:"everything else",linesWord:"lines",fLines:"lines of code",fProjects:"projects",fProjectsExcluded:a=>`${a} downloaded ${1===a?"copy":"copies"} excluded`,fLanguages:a=>`languages, mostly ${a}`,fCommits:"commits tracked",worthKnowing:"Worth knowing",worthKnowingSub:"true and useful, no action needed - the facts behind your estate",detailsLabel:"Details",catTimeCapsule:"time-capsule",catHousekeeping:"housekeeping",catHistory:"history",catMilestone:"milestone",wTodoFact:(a,b)=>`Your oldest note to yourself is still open, from ${a}: "${b}"`,wTodoWhy:"the estate's eldest note to yourself, still waiting",wTodoFrom:a=>`the estate's eldest note to yourself, from ${a}`,wSpaceFact:a=>`${a} of downloaded code libraries sit in projects you have not touched in months`,wSpaceWhy:"free to delete, one command brings it back",wBusiestFact:(a,b)=>`${a} is your busiest project, ${b.toLocaleString()} commits`,wBusiestWhy:"the most-worked-on thing you own",wBirthdayFact:(a,b,c)=>`${a} turns ${b} on ${c}`,wBirthdayWhy:"counted from its first commit",imageFoot:"runs on your machine \xb7 your files stay on it",bannerLead:"Sample report -",bannerLink:"point af360 at your real projects",bannerTail:"and these become your numbers.",counting:"Counting the estate… first time takes a minute.",failed:"The report didn't load - reload the page to try again.",emptyInvite:"Nothing to report yet.",emptyLine:"Watch a folder on Radar and the report writes itself - lines, languages, birthdays, all of it.",goRadar:"Go to Radar",todosTip:"Notes you left in your own code marking something still to do. af360 reads them where they sit and changes nothing.",reclaimableTip:"Space held by the downloaded code libraries (node_modules) of projects you have not touched in months. Deleting them frees the space; one command puts them back.",busiestTip:"Counted from the commits in each watched project's own history. It measures how often you saved work, not how long you spent.",birthdayTip:"Counted from the first commit in the project's history, which is the earliest date the project can prove about itself."},ahead:{title:"Ahead",purpose:"everything af360 knows a date for, before it surprises you",next90:"Next 90 days",further:"Further out",anniversaries:"Anniversaries",anniversariesMeta:"your estate's birthdays",undetermined:"No renewal date",addYourOwn:"Add your own",add:"Add",adding:"Adding…",reading:"Reading certificates…",emptyInvite:"Nothing on the horizon.",emptyLine:"Add trials or renewals below, or watch a site on Radar to track its certificate.",added:"On the timeline.",namePlaceholder:"hosting trial, license renewal…",notePlaceholder:"what happens then?",nameAria:"Name",dateAria:"Date",noteAria:"Note",bannerLead:"Sample timeline -",bannerLink:"watch your real sites",bannerTail:"and their certificate dates appear here, judged - with domain dates too if you turn that on.",weekJudg:"your week, counted on this machine - a fresh one starts Monday",nothingWatched:"nothing watched yet",nothingToDo:"nothing to do",kind:{ssl:"SSL certificate",domain:"domain renewal",manual:"your entry"},yours:"you added this",costTag:"costs money",costLabel:"it costs money when it comes",costAria:"Costs money",edit:"Edit",editAria:"Edit this entry",save:"Save",cancel:"Cancel",saved:"Changed.",removedNamed:"{0} removed.",done:"Done",undone:"Not done",doneMeta:"dealt with",passed:"passed",passedLine:"This date has passed.",reDate:"Give it a new date",secSuggested:"Worth tracking",suggestedMeta:"found on this machine - af360 adds nothing on its own",suggestAdd:"Track it",suggestNo:"Not this one",suggestSetAside:"Set aside.",suggestFilled:"Filled in below - check it and press Add.",suggestFromCert:"{0}'s certificate expires on this date, and af360 has no sign it renews itself"},settings:{title:"Settings",purpose:"preferences - everything lives in one folder on your machine",secWatching:"Watching",watchingHelp:"The folders af360 watches. It scans these on a rhythm; it also looks in the usual places when you ask it to find projects, and it shows you exactly where it looked.",watchingEmpty:"No folders yet - af360 is not looking anywhere.",watchingAdd:"Add a folder…",watchingPick:"Watch this folder",watchingAlready:"Already watching this folder.",watchingProject:"project",watchingProjects:"projects",watchingUnclaimed:"outside every folder above",stopWatching:"Stop watching",watchStopped:"{0} is no longer watched.",connHelp:"Let an AI agent ask af360 about this estate. af360 answers with what it last saw, and it answers read-only: nothing an agent asks can change anything.",connLooking:"Looking for AI tools on this machine…",connNone:"af360 could not find any of the AI tools it knows how to connect to on this machine.",connConnect:"Connect to",connDisconnect:"Disconnect",connConnected:"Connected",connNotConnected:"Not connected",connElsewhere:"Points at another af360",connUnverified:"af360 can't tell which af360 this points at",connOldShape:"Points at this af360 the old way - press Reconnect",connGitHubRefused:"GitHub refused this connection",connGitHubStale:"af360 cannot renew this connection",connUnreadable:"af360 can't read this one's settings file",connAlsoWorks:"Also works with {0} when installed.",connWillWrite:"af360 will add this to {0}'s settings file:",connWillRemove:"af360 will take this out of {0}'s settings file:",connWillRepoint:"af360 will point {0} at this af360 instead - it is set to a different one:",connLineCount:"{0} line(s) added, {1} removed, from line {2}.",connWillBackup:"A copy of the file as it is now will be saved first, at {0}",connConfirmWrite:"Write this change",connConfirmRemove:"Remove this",connRefused:"af360 stopped, and wrote nothing.",connWrote:"af360 is connected to {0}.",connRemoved:"af360 is no longer in {0}'s settings.",connBackupAt:"The file as it was is at {0}",connRestart:"Restart {0} to finish - it reads this when it starts.",connDropped:"{0} rewrote its own settings when it closed and af360's entry went with it. This happens, and it is not something you did.",connReconnect:"Reconnect",connRunning:"{0} is running - it may drop this when it closes. Reconnecting later is one click.",secLooking:"Looking around",cadenceLabel:"How often should I look around?",cadenceHelp:"Disk scan runs on open, then on this rhythm",cadenceAria:"Scan cadence",watchLabel:"Keep checking after I close the window",watchHelp:"af360 keeps checking your estate after you close the window. It stops when you shut down, restart or sign out, and you can quit it any time from its icon near the clock.",watchAria:"Keep checking after the window closes",startupLabel:"Start af360 when I sign in",startupHelp:"af360 opens with Windows and starts watching straight away. It does not run before you sign in, and you can turn it off here or in Task Manager.",startupAria:"Start af360 when I sign in to Windows",startupBlocked:"Turned off in Task Manager. Switch it back on there, under Startup, and af360 starts with Windows again.",startupPolicyOff:"af360 does not start with Windows on this machine, and that is set by policy rather than by you. Whoever manages this machine decides it, and af360 does not override them.",startupPolicyOn:"af360 starts with Windows on this machine, and that is set by policy rather than by you. Whoever manages this machine decides it, and af360 does not override them.",cadenceHourly:"Every hour",cadence6h:"Every 6 hours",cadenceDaily:"Once a day",cadenceCustom:"Custom…",customLabel:"Custom rhythm",customHelp:"Every how many hours? 1 to 24 - that is how often af360 looks while it is running",hoursAria:"Hours",secAppearance:"Appearance",viewLabel:"Default view",viewHelp:"Grid or rows - each section remembers your own override",viewAria:"Default view",viewCards:"Grid",viewRows:"Rows",langLabel:"Interface language",langHelp:"Room names, buttons and section titles. Your folder paths, findings and the sentences af360 writes about your estate stay in English.",langAria:"Interface language",langEn:"English",langAr:"العربية",secData:"Your data",dataLabel:"~/.af360/config.json",dataHelp:"Your watched folders, sites, entries and preferences live in the ~/.af360 folder on your machine, nowhere else. af360 never changes anything inside your projects: it reads them and reports. No accounts, no telemetry. af360 runs a small server on this machine so the window has something to talk to, and it is not reachable from anywhere else.",domainLabel:"Check when my domains renew",domainHelp:"Off by default. Turning it on lets af360 ask a public registry (rdap.org) when the domains behind your sites are due to renew, so those dates join the Ahead timeline with everything else. It sends the site's full address - including the part in front of the domain, which is usually your project's name - and nothing else: no file names, no contents, nothing about you or this machine. The request also carries af360's own name and version, and the answer format it can read. Left off, af360 still watches your sites and still reads their certificates; it just will not know their renewal dates.",updateLabel:"Tell me about new versions",updatePackaged:"Updates arrive through the Microsoft Store. af360 makes no check of its own.",updateHelp:"Once a day, af360 asks the public npm registry whether a newer af360 exists and prints one line if there is. That registry is the tester channel: it is where af360 installed with npm gets its updates. An af360 installed from the Microsoft Store is updated by Windows itself, automatically, and this check has nothing to tell it. It sends nothing about you or this machine. Everything else af360 does online happens because you asked for it, and each one has its own switch.",on:"On",off:"Off",secHow:"How af360 works",how:["It reads the folders you choose, here on this machine, and never changes anything inside them.","It looks at them when you open af360, then again on the rhythm you set above.","While af360 is running, it checks each site you watch once a minute.","It reads certificate dates for those sites, and the dates you add yourself, and says which ones actually need you. Domain renewal dates too, if you turn that on.","It points out quiet facts it noticed while looking. Those are suggestions, not alarms.","It writes its own file in the ~/.af360 folder. The one other thing it can write is an AI tool's config file, and only when you press Connect - it shows you the exact change first."],documentsHelp:"The two documents you accepted when af360 started. They are stored in af360 and open here; nothing opens a browser.",documentsOpen:"Read",secRules:"Rules",rulesMeta:"both feed the engine directly",excludeLabel:"Don't watch here",excludeHelp:"Folders every scan skips - even inside watched folders",excludePick:"Don't watch this folder",alreadyExcluded:"Already skipped ✓",chooseFolder:"Choose a folder…",customBad:"Pick a whole number of hours between 1 and 24.",muteLabel:"Mute a discovery type",muteHelp:"Muted detectors stop running; the Discoveries page says which are off.",muted:"Muted",running:"Running",cat:{money:"Money",identity:"Identity","time-capsule":"Time-capsule",safety:"Safety",health:"Health",site:"Site"}},connections:{title:"Connections",purpose:"Who may ask af360 about this estate, and what af360 may look at on your behalf.",secIn:"Agents reach in",inHelp:"A connected assistant can ask af360 about this estate on its own, without you doing anything. af360's answers quote text found on this machine - folder and branch names, commit messages, the notes files a project keeps for assistants - marked as content af360 read, never as instructions to follow. Connecting is yours to choose.",secOut:"af360 reaches out",outHelp:"af360 can also look outward - read-only - at services your estate already lives on, and fold what they know into the picture.",githubName:"GitHub",githubOffer:"CI results, pull requests, issues - read-only, from this machine only",githubBlind:"Until this is connected, af360 cannot check your remotes - if one has been renamed or moved, nothing here will say so.",githubConnect:"Connect GitHub…",githubReconnect:"Reconnect GitHub…",githubAuthorizeOnly:"Already installed af360 on GitHub? Authorize only",githubAuthorizeOnlyHelp:"Reconnects af360 without changing which repositories you granted.",secActivity:"Activity",activitySub:"which tool asked the witness, when, and what af360 could see asking",activityNone:"No agent has asked af360 anything in the last seven days - that is as far back as this record goes. When one does, it appears here and in the Log.",activityUnnamed:"Not identified",setupTitle:"Connect GitHub",setupLede:"af360 wants permission to look, never touch. It asks GitHub for read-only access to the repositories you choose - and GitHub, not af360, is where you choose them.",setupTouches:"af360 gives you a one-time code. You enter it on GitHub, choose which repositories af360 may read, and af360 picks it up from there.",deviceCodeLabel:"Your one-time code",deviceCopy:"Copy code",deviceCopied:"Copied",deviceGoLabel:"Enter it at",deviceExpires:"This code stops working in {0}.",deviceExpired:"This code has expired, and nothing was stored. Press Connect GitHub for a fresh one.",setupOpen:"Choose repositories on GitHub",setupStarting:"Asking GitHub for a code…",setupWaiting:"af360 is checking with GitHub every few seconds. This updates itself when you are done.",setupCancel:"Cancel",setupNoApp:"This build of af360 has no GitHub App registration, so it cannot connect yet.",receiptHead:"BEFORE ANYTHING IS STORED - the receipt:",receiptStored:"stored in ~/.af360/config.json, on this machine only, masked in every brief and answer",receiptCalls:"used from this machine to github.com and api.github.com only - the sign-in comes back to this computer, and no server of ours is involved, ever",receiptRefuse:"af360 asks GitHub for read-only permissions and nothing else - and it refuses the connection outright if GitHub ever reports otherwise",receiptLeak:"If this token ever leaked, it could read the repos you selected - nothing more, and it can never write. Revoking it is one click on GitHub (Settings - Applications - Authorized GitHub Apps - af360-app - Revoke access).",receiptBehalf:"GitHub's own screen will say af360 can \"act on your behalf\" - that is GitHub's wording for calling its API as you, and af360's calls are read-only, only on the repositories it has been granted, and it asks for nothing else",refusedLine:"af360's access for {0} was refused - reconnect to restore it. Until then GitHub answers nothing.",staleNoAppLine:"af360 holds a credential for {0} that is no longer working, and this build has no GitHub App registration to renew it with.",verifiedAs:"Connected as {0}",verifiedMeta:"read-only \xb7 {0} repositories \xb7 checked just now",verifiedSees:"af360 can see: {0}. For the ones that are folders af360 watches, it folds their CI results, pull requests and issues into the rooms when it scans.",repoOnAccount:"{0} on {1}",connectedMeta:"read-only \xb7 {0} \xb7 connected",repoCountOne:"1 repository",repoCountMany:"{0} repositories",grantedShow:"show the list",grantedHide:"hide the list",grantedAccount:"on {0}",grantedFloor:"af360 could not finish reading this list, so it may be short.",ghCardChecked:"GitHub checked",ghCardNever:"GitHub not checked yet",repoCountFloor:"at least {0}",verifiedNone:"af360 is connected, read-only, and cannot see any repositories yet. On GitHub, open Settings - Applications and find af360-app under your installed GitHub Apps, then choose the repositories af360 may read. If you asked to install it on an organisation, an owner there may still need to approve it.",verifiedNoInstall:"af360 is authorized, read-only, and is not installed on any account yet - so there is nothing for it to read. Installing it is the step that grants repositories: open af360-app on GitHub and install it on the account whose repositories you want af360 to watch. If you install it on an organisation, an owner there may need to approve it before af360 can see anything.",verifiedEmptyAccount:"af360 is connected to {0}, read-only, and everything you granted is in place - that account just has no repositories yet. Nothing to fix. When you make one and keep a copy in a folder af360 watches, af360 will pick it up on its next scan.",verifiedPartial:"af360 could not read the repository list for {0} of the installations it has been granted, so this list is what it can confirm and may be short. It will ask again the next time you connect.",refusedWrite:"Not connected - this token can write.",refusedWriteBody:"af360 only connects where it has been granted read access and nothing more. Its GitHub App asks for read-only permissions and nothing else, so a grant that can write should not be possible - nothing was stored. You can review what the installation grants on GitHub, under Settings - Applications - af360-app.",disconnect:"Disconnect",disconnected:"GitHub disconnected. The token was removed from config.json.",githubUnreadable:"af360 has a GitHub connection stored here that it cannot read. It was encrypted for a different Windows account or a different machine - a copied profile or a restored backup does this. Press Connect to sign in again."},diag:{title:"Share a diagnostic report",intro:"Everything af360 flags right now - what needs attention, why it matters, and the suggested fix - as one tidy file to hand to someone or paste into an AI assistant.",safe:"What you see here is exactly what gets saved. Folder paths are shortened, anything shaped like a password or key is hidden, and your machine name is never included.",hintText:"puts it on your clipboard now",hintFile:"saves a plain text file (.md) that editors and AI assistants read",hintPage:"saves a readable page you can print or save as PDF",downloadText:"Download as text",downloadPage:"Download as page",copyForAi:"Copy estate report",copied:"Copied ✓",dialogAria:"Diagnostic report"},check:{first:"First check - af360 will compare the next one against this.",since:"Since your last check on {0}:",cleared:"cleared {0}.",appeared:"new {0}.",unchanged:"nothing changed.",remaining:"{0} still open.",unmeasured:"{0} didn't run this time - not compared."},landing:{tag:"Everything you've built, watched from one place.",sub:"Runs on your machine. Your files stay on it.",open:"Open af360 →"},firstLight:{moment:"One moment.",gateTitle:"Welcome to af360",gateLead:"Let's get you set up. It takes about a minute.",gateBody:"af360 keeps an eye on the projects on this machine and tells you what is going on in them. It only reads - it never changes your files, and your files stay on your machine. The one thing it sends on its own is a once-a-day check for a newer af360, and you can switch that off. Everything else it does online happens because you asked for it, one switch at a time.",gateBodyPackaged:"af360 keeps an eye on the projects on this machine and tells you what is going on in them. It only reads - it never changes your files, and your files stay on your machine. af360 sends nothing on its own. Everything it does online happens because you asked for it, one switch at a time.",docsLead:"Continuing accepts the",docsAnd:"and the",docsTail:"Both are always in Settings.",termsName:"Terms of Use",privacyName:"Privacy Policy",docVersion:"Version",docsUnreadable:"af360 could not read its own Terms of Use and Privacy Policy from the files it ships. This is a fault in this copy of af360, and it cannot ask you to accept documents it cannot show you.",accept:"Accept and continue",accepting:"One moment…",notNow:"Not now",declinedTitle:"No problem",declinedBody:"af360 has not looked at your projects. Nothing on this machine was scanned. The only thing it has read is its own settings file, to see whether you had answered this before, and the only thing it saves is the size of this window. You can close it whenever you like.",declinedBack:"If you change your mind, just open af360 again and it will ask once more.",takeMeBack:"Take me back",sweepTitle:"Let's find your projects",sweepSearched:a=>`Searched ${a}`,sweepFoundSoFar:a=>1===a?"1 found so far":`${a} found so far`,sweepNoneYet:"Nothing found yet.",sweepFailed:"af360 could not finish looking. You can point it at a folder yourself once you are in.",pickTitle:a=>1===a?"Here's what af360 found: 1 project":`Here's what af360 found: ${a} projects`,pickHelp:"Pick the ones you'd like af360 to keep an eye on. You can add or remove folders any time.",startWatching:a=>1===a?"Start watching 1 folder":`Start watching ${a} folders`,continueWithout:"Continue without watching",watching:"Saving…",emptyTitle:"af360 did not find any projects",emptyBody:"af360 looked in the usual places on this machine and did not find any projects. If your work lives somewhere else, you can point af360 at the right folder once you are in.",emptyCapped:a=>`af360 stopped after finding ${1===a?"1 folder that looks like a download":`${a} folders that look like downloads`} rather than your own projects, so it did not open the places listed below. Point af360 at the folder your work lives in and it will look there.`,goInEmpty:"Take me in"},setup:{look:"Look for my projects",pickMyself:"I'll pick the folder myself",browse:"Browse folders",looking:"Looking in your usual places…",lookAgain:"Look again",addAnother:"Add another place",whereLooked:"Where I looked:",nothingNew:"nothing new",lookedCapped:(a,b)=>`af360 stopped after ${a} projects to keep this quick, so it did not open ${b} of the places below. Add a folder yourself if something of yours is missing.`,notLooked:"not opened - af360 had already found enough",pickWhere:"Pick where to look:",up:"↑ Up",noFolders:"Nothing here to watch - af360 does not list hidden folders or node_modules.",watchThis:"Watch this folder",alreadyWatching:"Already watching this folder ✓",watch:"Watch",watchAll:"Watch all",watching:"Watching ✓",foundCount:a=>`Found ${a} project${1===a?"":"s"}. Watch the ones you care about:`,adding:"Adding…",noneFound:"I didn't find any new projects in the places below.",previewOff:"Preview mode - config changes are off.",searchFailed:"Something went wrong while searching - try again.",downloadedHeader:"Downloads sharing a name",downloadedNote:"Inside Downloads, or archive-style names - probably not your estate. Watch any that really are yours:",downloadedTag:"Looks like a download",elsewhere:"Not what you expected? Your projects might live somewhere else - a second drive, an external disk.",elsewhereBtn:"Point me somewhere else"}}}};
|
|
1
|
+
"use strict";exports.id=2346,exports.ids=[2346],exports.modules={72346:(a,b,c)=>{c.d(b,{UI:()=>e});var d=c(65970);let e={common:{scanning:"Scanning…",loading:"Looking around…",checking:"checking…",undo:"Undo",save:"Save",done:"Done",remove:"Remove",close:"Close",cancel:"Cancel",back:"Back",show:"Show ▾",hide:"Hide ▴",collapse:"Collapse ▴",details:"Details ▾",less:"less ▴",more:"more ▾",somethingWrong:"Something went wrong - try again."},appbar:{aria:"Estate",shortcuts:"Shortcuts",shortcutsTip:"Show the keyboard shortcuts.",roomAria:"Current room"},log:{title:"Log",purpose:"Everything af360 has recorded on this machine, newest first.",filterAll:"All",filterAgents:"Agents",filterConnections:"Connections",filterClosed:"Resolved",untaggedNote:"af360 tags three kinds of entry: an agent asked something, a connection changed, a risk ended. Everything else is an untagged line. All shows everything.",dayToday:"Today",dayYesterday:"Yesterday",floor:"Seven days is as far back as this record goes.",empty:"af360 has not written anything down yet - scans, site checks and agent questions all land here."},shell:{clockSkew:d.lt.at,clockSkewCore:d.lt.core,navAria:"Main",modeAria:"Mode",themeAria:"Look",moreGroup:"More",railAria:"Live",modeSimple:"Simple",modeDev:"Dev",themeDay:"Day",themeNight:"Night",guardianSoon:"soon",footBy:"by",footBrand:"Afeleos",footLine:"Your files stay on your machine.",railLive:"Live",railLog:"Log \xb7 7 days",railLogUnknown:"Log",railLogSince:a=>`Log \xb7 since ${a}`,railLogSinceTime:a=>`Log \xb7 since ${a}`,railLogTruncated:a=>`Log \xb7 since ${a} \xb7 limit reached`,railLogUnreadable:a=>`${a} ${1===a?"entry":"entries"} could not be read`,railLogEmpty:"Log \xb7 nothing yet",railNext:"Next",railConfigFault:"I can't read your settings",railConfigFaultSub:"so I don't know what to watch",railQuiet:"quiet so far",railQuietSub:"incidents and scans land here",railNoEvents:"no incidents yet",railNoEventsSub:"scans land here",railNoRecord:"nothing recorded yet",railNoRecordSub:"af360 hasn't finished a scan",railOlder:"everything older is in the Log",railSwept:"git status swept",railMissing:"still missing",railNextSiteCheck:"site check",railNextScan:"folder scan",railNextSsl:"SSL judgment"},roomError:{invite:"This room didn't open",line:"Something in this room went wrong, so af360 stopped drawing it rather than show you something half-built. af360 has not judged the other rooms from here.",fixLead:"What to do:",fixRetry:"Try the room again. If it keeps failing, the other rooms will tell you whether they are working.",retry:"Try again"},configFault:{invite:"I can't read your settings",line:"Your settings file is where it should be, but I can't read it, so I don't know what you asked me to watch. I have not changed or written over it.",whereLabel:"The file is here:",fixLead:"What usually fixes it:",fixOpen:"Open the file and check it is complete - a half-written or hand-edited file is the usual cause.",fixRestore:"If you keep backups, restore your last good copy over it.",fixRename:"Or rename the file. af360 will start fresh, and your old one stays on disk for you to look at.",retry:"Try again",recovered:"Your settings file could not be read. af360 restored the previous copy."},radar:{title:"Radar",purpose:"what needs you right now, in one place",scanNow:"Scan now",shareReport:"Share a report",shareReportTip:"A tidy file of what needs attention, to share or paste into an AI",looked:"looked",needsYou:"Needs you",projects:"Projects",projectsMeta:"checking backups, unsaved work, activity",watchMore:"Watch more folders",sites:"Sites",sitesMeta:"checked every minute while af360 is running",discoveries:"Discoveries",discoveriesMeta:"what the estate is quietly telling you",discoveriesTop3:"showing the top 3",ignored:"Ignored",ignoredLabel:"Ignored",ignoredStrip:a=>`Ignored: ${a}`,ignoredMeta:"still scanned - they resurface only if things change",watchAgain:"Watch again",stillIgnore:"Still ignore",findIt:"Find it",stopWatching:"Stop watching",stopWatchingFolder:"Stop watching this folder",stopWatchingSite:"Stop watching this site",ignore:"Ignore",ignoreIt:"Ignore it",keepWatching:"Keep watching",later:"Later",check:"Check",handled:"handled ✓",folder:"Folder",copyPath:"Copy path",copyAddress:"Copy address",copied:"Copied ✓",copyFailed:"Couldn't copy",whatISaw:"What I saw",worthDoing:"Worth doing",viewGrid:"Grid",viewRows:"Rows",viewAria:"How to show this section",pin:"Pin to top",pinLabel:"Pin",ignoreLabel:"Ignore",unpin:"Unpin",emptyInvite:"Nothing to watch yet - which makes this the perfect starting line.",emptyLine:"af360 keeps an eye on the folders you work in and the websites you own, and tells you when one of them needs you - work that has no copy anywhere, a site that stops answering, a renewal creeping up.",emptyPickFolder:"Choose a folder to watch",emptyPickSite:"Watch a website",emptySomeday:"Building something someday? af360 will be ready - it costs nothing to keep around.",emptyBack:"Back",sitePlaceholder:"yoursite.com",siteNamePlaceholder:"a name for it (optional)",siteAddrAria:"Website address",siteNameAria:"Name for this website",siteAdd:"Watch it",siteAdding:"Adding…",siteAdded:"Watching it. af360 checks it every minute while it is running.",firstCheck:"first check under way…",historyBuilds:"history builds",sparkAria:"Response time, last 24 hours",proposals:"Worth watching",proposalsMeta:"found in your own project files",proposalNamedIn:"named in {0} - line {1}",proposalIn:"in {0}",proposalChanged:"you set this aside when it was named in {0}; it is named in {1} now",proposalNotThis:"Not this one",proposalSetAside:"Set aside. af360 won't ask again unless the evidence changes.",seeAll:a=>`See all ${a} discoveries →`,needsYouAlways:"all shown, always \xb7 ordered by consequence",tagLosable:"losable",tagMoney:"money",tagHygiene:"hygiene",moreActions:"More",moreActionsAria:"More actions for this finding",effIgnore:"hide until it changes",effLater:"resurfaces tomorrow",effStillIgnore:"keep it hidden",effStopWatching:"removed from af360 only",effPin:"keep on top",effUnpin:"back in normal order",fix:"Fix",ignoredStill:"still scanned \xb7 resurfaces on change",ignoredShow:"Show",ignoredHide:"Hide",seeAllProjects:a=>`See all ${a} projects →`,seeAllSites:a=>`See all ${a} sites →`,moreCleanBacked:a=>`and ${a} more with nothing needing you`,moreClean:a=>`and ${a} more, all clean`,moreProjects:a=>`and ${a} more on the Projects page`,moreSitesUp:a=>`and ${a} more with nothing needing you`,moreSites:a=>`and ${a} more on the Sites page`,bannerLead:"This is a",bannerStrong:"sample estate",bannerRest:"so you can see everything working - try Check, Ignore, and Later.",bannerLink:"Point af360 at your real projects",bannerTail:"and it becomes yours.",ignoredToast:"Ignored {0} - it's not gone, it moved to the Ignored line under Needs you (still scanned).",confirmProject:"This project isn't fully backed up. Ignore anyway? I'll stop mentioning it.",confirmProjectShort:"This project isn't backed up. Ignore anyway? I'll stop mentioning it.",confirmSite:"This site is down right now. Ignore anyway? I'll stop mentioning it.",movedTail:"moved - pick its new home. The old entry is replaced."},unread:{reason:"a scan that did not finish",what:a=>`af360 could not finish reading ${a}.`,evidence:"git did not answer for this folder, so nothing below is a verdict",why:"af360 will not guess - it would rather say it could not look than tell you something untrue.",step:"Nothing to do: the next scan tries again. If it keeps saying this, the folder or git itself is the thing to check."},session:{verdictHint:"click to see them",verdictJumpAria:"Show the work that would be lost",wereIn:"You were in",uncommitted:a=>`${a} file${1===a?"":"s"}`,uncommittedTail:"uncommitted",clean:"clean",lastCommit:"last commit",touched:"touched",noRecent:"Nothing recent - your estate is below",subline:"most recent activity across your watched folders",copyPath:"Copy path",copyContext:"Copy project brief",copyContextShort:"Copy project brief",copying:"Assembling…",copied:"Copied ✓",copyFailed:"Couldn't copy",copyHandoff:"Copy for your agent",handoffCopied:"Copied: what needs doing, the commands for each, and what a dead disk would cost. Secrets masked.",fix:"Fix",fixHeadingWhat:"What is happening",fixHeadingSteps:"What to do",fixHeadingCommands:"Commands",copyCommands:"Copy commands",commandsCopied:"Commands copied ✓",briefToast:a=>`Copied: ${a.join(", ")}.`,briefFailed:"Couldn't assemble the brief - try again.",briefRedacted:"secrets left out",actSave:a=>`Save ${a}`,actPush:a=>`Push ${a}`,actBackUp:a=>`Back up ${a}`,actDuplicate:a=>`Decide on ${a}'s duplicate`,actSiteDown:a=>`${a} is down`,actRenew:a=>`Renew ${a}`,actCertLate:a=>`Chase ${a}'s certificate`,actFind:a=>`Find ${a}`,actDecide:a=>`Decide on ${a}`,actOffline:"Check this machine's connection"},stream:{starting:"still looking - the deeper checks are starting, results land here as they finish",counting:(a,b)=>`still looking - ${a} of ${b} deeper check${1===b?"":"s"} done, results land here as they finish`,railWatchedNothing:a=>`watched since ${a} - nothing has changed`,railScan:(a,b)=>`scanning ${a} folder${1===a?"":"s"}${b>0?` \xb7 ${b} site${1===b?"":"s"}`:""} \xb7 deeper checks next`},keys:{title:"Keyboard shortcuts",sub:"They do not fire while you are typing in a box - except Escape, which always closes what is open.",close:"Close",aria:"Keyboard shortcuts",rooms:"Go to a room",actions:"Do something",goRadar:"Radar",goDiscoveries:"Discoveries",goReport:"Estate Report",goAhead:"Ahead",goSettings:"Settings",doScan:"Scan now",doCopy:"Copy the project brief for the project you were in",doHelp:"Show this list",doEsc:"Close this list",copiedToast:"Project brief copied - paste it into an assistant.",noProject:"af360 has no current project to copy context for."},discoveries:{title:"Discoveries",purpose:"what af360 noticed about the estate, in one place",backToRadar:"Back to Radar",loading:"Looking for discoveries…",emptyInvite:"No discoveries yet.",emptyLine:"Watch some folders on Radar and the estate starts telling you things - unpushed work, forgotten costs, sites worth a look.",goRadar:"Go to Radar",bannerLead:"Sample discoveries -",bannerLink:"point af360 at your real projects",bannerTail:"and these become yours.",mutedTitle:"Muted in Settings, so not running",failedTitle:"Didn't finish this time",failedTail:"Anything these would have found is missing from this page. The next scan tries again.",unmute:"Unmute in Settings →",worth:"Worth doing:",showMe:"Show me ▾",seeCard:"See the card it sends ▾",fixSteps:"Fix steps",whatISaw:"What I saw",dismiss:"Not this one",effDismiss:"af360 keeps checking, and says so only if this changes",changedSince:"You set this aside - af360 would now say something different.",dismissedThen:"You set aside:",dismissedNow:"Now:",stillDismiss:"Still not this one",undismiss:"Show it again",copyDetails:"Copy details",ogBare:"No title, no description, no image - the link shows up naked.",ogNoTitle:"(no title)",stillLooking:a=>`still looking - ${a} deeper check${1===a?"":"s"} running, results land here`,cat:{"time-capsule":"Time capsule",safety:"Safety",money:"Money",identity:"Identity",health:"Health and housekeeping",site:"Your sites"}},projects:{title:"Projects",purpose:"every folder af360 watches, all on one page",backToRadar:"Back to Radar",needing:a=>`${a} need${1===a?"s":""} you, the rest are clean`,allClean:"all clean",emptyInvite:"No projects watched yet.",emptyLine:"Point af360 at a folder on Radar and everything inside it appears here.",goRadar:"Go to Radar"},sites:{title:"Sites",purpose:"every site af360 watches, all on one page",backToRadar:"Back to Radar",checking:"Checking your sites…",answering:(a,b)=>`${a} of ${b} answering`,emptyInvite:"No sites watched yet.",emptyLine:"Add a site on Radar and af360 checks it every minute while it runs.",goRadar:"Go to Radar",groupYours:"Your sites",unitSite:"site",unitSites:"sites",newGroup:"New group",groupNameAria:"Group name",groupNamePlaceholder:"Client work",createGroup:"Create",removeGroup:"Delete group",removeGroupNote:"The sites in it move back to Your sites. None of them are removed.",fileIn:"Group",groupServices:"Services you depend on",servicesPurpose:"af360 asks each of these one question: did it answer? None of af360's site checks run here.",svcAnswered:"af360 asked, and it answered.",svcErrorReply:"af360 asked, and the reply was an error.",svcNoAnswer:"af360 asked, and got no answer.",svcAsking:"af360 is asking…",svcNotTheWorld:"This is what happened when af360 asked, from this machine. It is not a report on the service.",svcViaStatus:"af360 asks its published status page.",svcViaHome:"It publishes no status page, so af360 asks its home page.",removeService:"Remove",servicesNoPresets:"af360 has no service presets yet.",addService:"Add a service",servicesNoneAdded:"af360 contacts nothing here until you add it."},card:{heroLabel:"lines of code across {0} projects",heroSub:"Counted on this machine, not from an API.",gridHead:"Twelve weeks of commits",statLanguages:"Languages",statAge:"Estate age",statCommits:"Commits, twelve weeks to today",statClean:"Clean",statReadProjects:"Repositories read",statBusiestDay:"Busiest day",statBusiestProject:"Busiest project, {0}",emptyEstate:"Nothing measured yet.",statBranches:"Local branches",capped:"Measured across the {0} projects af360 read.",seal:"Measured on this machine \xb7 build {0}",sealNoBuild:"Measured on this machine \xb7 no build fingerprint",foot:"af360 by Afeleos",button:"Save the card"},report:{title:"Estate Report",purpose:"the whole picture in one look, kept on this machine",heading:"Your estate, at a glance",asOf:"as of",sub:"The whole picture in one look. This stays on your machine; your personal view - Share a report makes the file meant for others.",download:"Save as image",downloadText:"Save as text",vNeeding:a=>`need${1===a?"s":""} your attention`,vClean:"clean and backed up",vSites:"sites answering",rightNow:"Right now",rUnsaved:"Unsaved work at risk",rUnsavedVal:(a,b)=>`${a} project${1===a?"":"s"}, ${b} change${1===b?"":"s"}`,rNone:"none ✓",rUnpushed:"Commits only on this machine",rUnpushedVal:(a,b)=>`${a}, in ${b} project${1===b?"":"s"}`,rEverythingElse:"Everything else",rBackedUp:"backed up ✓",rNoBackup:"No copy anywhere but here",rNoBackupVal:a=>`${a} project${1===a?"":"s"}`,rSites:"Sites",rSitesAllUp:"all up, no incidents",rSitesUpNow:"all up right now",rSitesDown:a=>`${a} not answering`,rNext:"Next date to know",dateIn:(a,b)=>`${a} in ${b}d`,inNumbers:"Your estate in numbers",langAria:"Share of your code by language",langRest:"everything else",linesWord:"lines",fLines:"lines of code",fProjects:"projects",fProjectsExcluded:a=>`${a} downloaded ${1===a?"copy":"copies"} excluded`,fLanguages:a=>`languages, mostly ${a}`,fCommits:"commits tracked",worthKnowing:"Worth knowing",worthKnowingSub:"true and useful, no action needed - the facts behind your estate",detailsLabel:"Details",catTimeCapsule:"time-capsule",catHousekeeping:"housekeeping",catHistory:"history",catMilestone:"milestone",wTodoFact:(a,b)=>`Your oldest note to yourself is still open, from ${a}: "${b}"`,wTodoWhy:"the estate's eldest note to yourself, still waiting",wTodoFrom:a=>`the estate's eldest note to yourself, from ${a}`,wSpaceFact:a=>`${a} of downloaded code libraries sit in projects you have not touched in months`,wSpaceWhy:"free to delete, one command brings it back",wBusiestFact:(a,b)=>`${a} is your busiest project, ${b.toLocaleString()} commits`,wBusiestWhy:"the most-worked-on thing you own",wBirthdayFact:(a,b,c)=>`${a} turns ${b} on ${c}`,wBirthdayWhy:"counted from its first commit",imageFoot:"runs on your machine \xb7 your files stay on it",bannerLead:"Sample report -",bannerLink:"point af360 at your real projects",bannerTail:"and these become your numbers.",counting:"Counting the estate… first time takes a minute.",failed:"The report didn't load - reload the page to try again.",emptyInvite:"Nothing to report yet.",emptyLine:"Watch a folder on Radar and the report writes itself - lines, languages, birthdays, all of it.",goRadar:"Go to Radar",todosTip:"Notes you left in your own code marking something still to do. af360 reads them where they sit and changes nothing.",reclaimableTip:"Space held by the downloaded code libraries (node_modules) of projects you have not touched in months. Deleting them frees the space; one command puts them back.",busiestTip:"Counted from the commits in each watched project's own history. It measures how often you saved work, not how long you spent.",birthdayTip:"Counted from the first commit in the project's history, which is the earliest date the project can prove about itself."},ahead:{title:"Ahead",purpose:"everything af360 knows a date for, before it surprises you",next90:"Next 90 days",further:"Further out",anniversaries:"Anniversaries",anniversariesMeta:"your estate's birthdays",undetermined:"No renewal date",addYourOwn:"Add your own",add:"Add",adding:"Adding…",reading:"Reading certificates…",emptyInvite:"Nothing on the horizon.",emptyLine:"Add trials or renewals below, or watch a site on Radar to track its certificate.",added:"On the timeline.",namePlaceholder:"hosting trial, license renewal…",notePlaceholder:"what happens then?",nameAria:"Name",dateAria:"Date",noteAria:"Note",bannerLead:"Sample timeline -",bannerLink:"watch your real sites",bannerTail:"and their certificate dates appear here, judged - with domain dates too if you turn that on.",weekJudg:"your week, counted on this machine - a fresh one starts Monday",nothingWatched:"nothing watched yet",nothingToDo:"nothing to do",kind:{ssl:"SSL certificate",domain:"domain renewal",manual:"your entry"},yours:"you added this",costTag:"costs money",costLabel:"it costs money when it comes",costAria:"Costs money",edit:"Edit",editAria:"Edit this entry",save:"Save",cancel:"Cancel",saved:"Changed.",removedNamed:"{0} removed.",done:"Done",undone:"Not done",doneMeta:"dealt with",passed:"passed",passedLine:"This date has passed.",reDate:"Give it a new date",secSuggested:"Worth tracking",suggestedMeta:"found on this machine - af360 adds nothing on its own",suggestAdd:"Track it",suggestNo:"Not this one",suggestSetAside:"Set aside.",suggestFilled:"Filled in below - check it and press Add.",suggestFromCert:"{0}'s certificate expires on this date, and af360 has no sign it renews itself"},settings:{title:"Settings",purpose:"preferences - everything lives in one folder on your machine",secWatching:"Watching",watchingHelp:"The folders af360 watches. It scans these on a rhythm; it also looks in the usual places when you ask it to find projects, and it shows you exactly where it looked.",watchingEmpty:"No folders yet - af360 is not looking anywhere.",watchingAdd:"Add a folder…",watchingPick:"Watch this folder",watchingAlready:"Already watching this folder.",watchingProject:"project",watchingProjects:"projects",watchingUnclaimed:"outside every folder above",stopWatching:"Stop watching",watchStopped:"{0} is no longer watched.",connHelp:"Let an AI agent ask af360 about this estate. af360 answers with what it last saw, and it answers read-only: nothing an agent asks can change anything.",connLooking:"Looking for AI tools on this machine…",connNone:"af360 could not find any of the AI tools it knows how to connect to on this machine.",connConnect:"Connect to",connDisconnect:"Disconnect",connConnected:"Connected",connNotConnected:"Not connected",connElsewhere:"Points at another af360",connUnverified:"af360 can't tell which af360 this points at",connOldShape:"Points at this af360 the old way - press Reconnect",connGitHubRefused:"GitHub refused this connection",connGitHubStale:"af360 cannot renew this connection",connUnreadable:"af360 can't read this one's settings file",connAlsoWorks:"Also works with {0} when installed.",connWillWrite:"af360 will add this to {0}'s settings file:",connWillRemove:"af360 will take this out of {0}'s settings file:",connWillRepoint:"af360 will point {0} at this af360 instead - it is set to a different one:",connLineCount:"{0} line(s) added, {1} removed, from line {2}.",connWillBackup:"A copy of the file as it is now will be saved first, at {0}",connConfirmWrite:"Write this change",connConfirmRemove:"Remove this",connRefused:"af360 stopped, and wrote nothing.",connWrote:"af360 is connected to {0}.",connRemoved:"af360 is no longer in {0}'s settings.",connBackupAt:"The file as it was is at {0}",connRestart:"Restart {0} to finish - it reads this when it starts.",connDropped:"{0} rewrote its own settings when it closed and af360's entry went with it. This happens, and it is not something you did.",connReconnect:"Reconnect",connRunning:"{0} is running - it may drop this when it closes. Reconnecting later is one click.",secLooking:"Looking around",cadenceLabel:"How often should I look around?",cadenceHelp:"Disk scan runs on open, then on this rhythm",cadenceAria:"Scan cadence",watchLabel:"Keep checking after I close the window",watchHelp:"af360 keeps checking your estate after you close the window. It stops when you shut down, restart or sign out, and you can quit it any time from its icon near the clock.",watchAria:"Keep checking after the window closes",startupLabel:"Start af360 when I sign in",startupHelp:"af360 opens with Windows and starts watching straight away. It does not run before you sign in, and you can turn it off here or in Task Manager.",startupAria:"Start af360 when I sign in to Windows",startupBlocked:"Turned off in Task Manager. Switch it back on there, under Startup, and af360 starts with Windows again.",startupPolicyOff:"af360 does not start with Windows on this machine, and that is set by policy rather than by you. Whoever manages this machine decides it, and af360 does not override them.",startupPolicyOn:"af360 starts with Windows on this machine, and that is set by policy rather than by you. Whoever manages this machine decides it, and af360 does not override them.",cadenceHourly:"Every hour",cadence6h:"Every 6 hours",cadenceDaily:"Once a day",cadenceCustom:"Custom…",customLabel:"Custom rhythm",customHelp:"Every how many hours? 1 to 24 - that is how often af360 looks while it is running",hoursAria:"Hours",secAppearance:"Appearance",viewLabel:"Default view",viewHelp:"Grid or rows - each section remembers your own override",viewAria:"Default view",viewCards:"Grid",viewRows:"Rows",langLabel:"Interface language",langHelp:"Room names, buttons and section titles. Your folder paths, findings and the sentences af360 writes about your estate stay in English.",langAria:"Interface language",langEn:"English",langAr:"العربية",secData:"Your data",dataLabel:"~/.af360/config.json",dataHelp:"Your watched folders, sites, entries and preferences live in the ~/.af360 folder on your machine, nowhere else. af360 never changes anything inside your projects: it reads them and reports. No accounts, no telemetry. af360 runs a small server on this machine so the window has something to talk to, and it is not reachable from anywhere else.",domainLabel:"Check when my domains renew",domainHelp:"Off by default. Turning it on lets af360 ask a public registry (rdap.org) when the domains behind your sites are due to renew, so those dates join the Ahead timeline with everything else. It sends the site's full address - including the part in front of the domain, which is usually your project's name - and nothing else: no file names, no contents, nothing about you or this machine. The request also carries af360's own name and version, and the answer format it can read. Left off, af360 still watches your sites and still reads their certificates; it just will not know their renewal dates.",updateLabel:"Tell me about new versions",updatePackaged:"Updates arrive through the Microsoft Store. af360 makes no check of its own.",updateHelp:"Once a day, af360 asks the public npm registry whether a newer af360 exists and prints one line if there is. That registry is the tester channel: it is where af360 installed with npm gets its updates. An af360 installed from the Microsoft Store is updated by Windows itself, automatically, and this check has nothing to tell it. It sends nothing about you or this machine. Everything else af360 does online happens because you asked for it, and each one has its own switch.",on:"On",off:"Off",secHow:"How af360 works",how:["It reads the folders you choose, here on this machine, and never changes anything inside them.","It looks at them when you open af360, then again on the rhythm you set above.","While af360 is running, it checks each site you watch once a minute.","It reads certificate dates for those sites, and the dates you add yourself, and says which ones actually need you. Domain renewal dates too, if you turn that on.","It points out quiet facts it noticed while looking. Those are suggestions, not alarms.","It writes its own file in the ~/.af360 folder. The one other thing it can write is an AI tool's config file, and only when you press Connect - it shows you the exact change first."],documentsHelp:"The two documents you accepted when af360 started. They are stored in af360 and open here; nothing opens a browser.",documentsOpen:"Read",secRules:"Rules",rulesMeta:"both feed the engine directly",excludeLabel:"Don't watch here",excludeHelp:"Folders every scan skips - even inside watched folders",excludePick:"Don't watch this folder",alreadyExcluded:"Already skipped ✓",chooseFolder:"Choose a folder…",customBad:"Pick a whole number of hours between 1 and 24.",muteLabel:"Mute a discovery type",muteHelp:"Muted detectors stop running; the Discoveries page says which are off.",muted:"Muted",running:"Running",cat:{money:"Money",identity:"Identity","time-capsule":"Time-capsule",safety:"Safety",health:"Health",site:"Site"}},connections:{title:"Connections",purpose:"Who may ask af360 about this estate, and what af360 may look at on your behalf.",secIn:"Agents reach in",inHelp:"A connected assistant can ask af360 about this estate on its own, without you doing anything. af360's answers quote text found on this machine - folder and branch names, commit messages, the notes files a project keeps for assistants - marked as content af360 read, never as instructions to follow. Connecting is yours to choose.",secOut:"af360 reaches out",outHelp:"af360 can also look outward - read-only - at services your estate already lives on, and fold what they know into the picture.",githubName:"GitHub",githubOffer:"CI results, pull requests, issues - read-only, from this machine only",githubBlind:"Until this is connected, af360 cannot check your remotes - if one has been renamed or moved, nothing here will say so.",githubConnect:"Connect GitHub…",githubReconnect:"Reconnect GitHub…",githubAuthorizeOnly:"Already installed af360 on GitHub? Authorize only",githubAuthorizeOnlyHelp:"Reconnects af360 without changing which repositories you granted.",secActivity:"Activity",activitySub:"which tool asked the witness, when, and what af360 could see asking",activityNone:"No agent has asked af360 anything in the last seven days - that is as far back as this record goes. When one does, it appears here and in the Log.",activityUnnamed:"Not identified",setupTitle:"Connect GitHub",setupLede:"af360 wants permission to look, never touch. It asks GitHub for read-only access to the repositories you choose - and GitHub, not af360, is where you choose them.",setupTouches:"af360 gives you a one-time code. You enter it on GitHub, choose which repositories af360 may read, and af360 picks it up from there.",deviceCodeLabel:"Your one-time code",deviceCopy:"Copy code",deviceCopied:"Copied",deviceGoLabel:"Enter it at",deviceExpires:"This code stops working in {0}.",deviceExpired:"This code has expired, and nothing was stored. Press Connect GitHub for a fresh one.",setupOpen:"Choose repositories on GitHub",setupStarting:"Asking GitHub for a code…",setupWaiting:"af360 is checking with GitHub every few seconds. This updates itself when you are done.",setupCancel:"Cancel",setupNoApp:"This build of af360 has no GitHub App registration, so it cannot connect yet.",receiptHead:"BEFORE ANYTHING IS STORED - the receipt:",receiptStored:"stored in ~/.af360/config.json, on this machine only, masked in every brief and answer",receiptCalls:"used from this machine to github.com and api.github.com only - the sign-in comes back to this computer, and no server of ours is involved, ever",receiptRefuse:"af360 asks GitHub for read-only permissions and nothing else - and it refuses the connection outright if GitHub ever reports otherwise",receiptLeak:"If this token ever leaked, it could read the repos you selected - nothing more, and it can never write. Revoking it is one click on GitHub (Settings - Applications - Authorized GitHub Apps - af360-app - Revoke access).",receiptBehalf:"GitHub's own screen will say af360 can \"act on your behalf\" - that is GitHub's wording for calling its API as you, and af360's calls are read-only, only on the repositories it has been granted, and it asks for nothing else",refusedLine:"af360's access for {0} was refused - reconnect to restore it. Until then GitHub answers nothing.",staleNoAppLine:"af360 holds a credential for {0} that is no longer working, and this build has no GitHub App registration to renew it with.",verifiedAs:"Connected as {0}",verifiedMeta:"read-only \xb7 {0} repositories \xb7 checked just now",verifiedSees:"af360 can see: {0}. For the ones that are folders af360 watches, it folds their CI results, pull requests and issues into the rooms when it scans.",repoOnAccount:"{0} on {1}",connectedMeta:"read-only \xb7 {0} \xb7 connected",repoCountOne:"1 repository",repoCountMany:"{0} repositories",grantedShow:"show the list",grantedHide:"hide the list",grantedAccount:"on {0}",grantedFloor:"af360 could not finish reading this list, so it may be short.",ghCardChecked:"GitHub checked",ghCardNever:"GitHub not checked yet",repoCountFloor:"at least {0}",verifiedNone:"af360 is connected, read-only, and cannot see any repositories yet. On GitHub, open Settings - Applications and find af360-app under your installed GitHub Apps, then choose the repositories af360 may read. If you asked to install it on an organisation, an owner there may still need to approve it.",verifiedNoInstall:"af360 is authorized, read-only, and is not installed on any account yet - so there is nothing for it to read. Installing it is the step that grants repositories: open af360-app on GitHub and install it on the account whose repositories you want af360 to watch. If you install it on an organisation, an owner there may need to approve it before af360 can see anything.",verifiedEmptyAccount:"af360 is connected to {0}, read-only, and everything you granted is in place - that account just has no repositories yet. Nothing to fix. When you make one and keep a copy in a folder af360 watches, af360 will pick it up on its next scan.",verifiedPartial:"af360 could not read the repository list for {0} of the installations it has been granted, so this list is what it can confirm and may be short. It will ask again the next time you connect.",refusedWrite:"Not connected - this token can write.",refusedWriteBody:"af360 only connects where it has been granted read access and nothing more. Its GitHub App asks for read-only permissions and nothing else, so a grant that can write should not be possible - nothing was stored. You can review what the installation grants on GitHub, under Settings - Applications - af360-app.",disconnect:"Disconnect",disconnected:"GitHub disconnected. The token was removed from config.json.",githubUnreadable:"af360 has a GitHub connection stored here that it cannot read. It was encrypted for a different Windows account or a different machine - a copied profile or a restored backup does this. Press Connect to sign in again."},diag:{title:"Share a diagnostic report",intro:"Everything af360 flags right now - what needs attention, why it matters, and the suggested fix - as one tidy file to hand to someone or paste into an AI assistant.",safe:"What you see here is exactly what gets saved. Folder paths are shortened, anything shaped like a password or key is hidden, and your machine name is never included.",hintText:"puts it on your clipboard now",hintFile:"saves a plain text file (.md) that editors and AI assistants read",hintPage:"saves a readable page you can print or save as PDF",downloadText:"Download as text",downloadPage:"Download as page",copyForAi:"Copy estate report",copied:"Copied ✓",dialogAria:"Diagnostic report"},check:{first:"First check - af360 will compare the next one against this.",since:"Since your last check on {0}:",cleared:"cleared {0}.",appeared:"new {0}.",unchanged:"nothing changed.",remaining:"{0} still open.",unmeasured:"{0} didn't run this time - not compared."},landing:{tag:"Everything you've built, watched from one place.",sub:"Runs on your machine. Your files stay on it.",open:"Open af360 →"},firstLight:{moment:"One moment.",gateTitle:"Welcome to af360",gateLead:"Let's get you set up. It takes about a minute.",gateBody:"af360 keeps an eye on the projects on this machine and tells you what is going on in them. It only reads - it never changes your files, and your files stay on your machine. The one thing it sends on its own is a once-a-day check for a newer af360, and you can switch that off. Everything else it does online happens because you asked for it, one switch at a time.",gateBodyPackaged:"af360 keeps an eye on the projects on this machine and tells you what is going on in them. It only reads - it never changes your files, and your files stay on your machine. af360 sends nothing on its own. Everything it does online happens because you asked for it, one switch at a time.",docsLead:"Continuing accepts the",docsAnd:"and the",docsTail:"Both are always in Settings.",termsName:"Terms of Use",privacyName:"Privacy Policy",docVersion:"Version",docsUnreadable:"af360 could not read its own Terms of Use and Privacy Policy from the files it ships. This is a fault in this copy of af360, and it cannot ask you to accept documents it cannot show you.",accept:"Accept and continue",accepting:"One moment…",notNow:"Not now",declinedTitle:"No problem",declinedBody:"af360 has not looked at your projects. Nothing on this machine was scanned. The only thing it has read is its own settings file, to see whether you had answered this before, and the only thing it saves is the size of this window. You can close it whenever you like.",declinedBack:"If you change your mind, just open af360 again and it will ask once more.",takeMeBack:"Take me back",sweepTitle:"Let's find your projects",sweepSearched:a=>`Searched ${a}`,sweepFoundSoFar:a=>1===a?"1 found so far":`${a} found so far`,sweepNoneYet:"Nothing found yet.",sweepFailed:"af360 could not finish looking. You can point it at a folder yourself once you are in.",pickTitle:a=>1===a?"Here's what af360 found: 1 project":`Here's what af360 found: ${a} projects`,pickHelp:"Pick the ones you'd like af360 to keep an eye on. You can add or remove folders any time.",startWatching:a=>1===a?"Start watching 1 folder":`Start watching ${a} folders`,continueWithout:"Continue without watching",watching:"Saving…",emptyTitle:"af360 did not find any projects",emptyBody:"af360 looked in the usual places on this machine and did not find any projects. If your work lives somewhere else, you can point af360 at the right folder once you are in.",emptyCapped:a=>`af360 stopped after finding ${1===a?"1 folder that looks like a download":`${a} folders that look like downloads`} rather than your own projects, so it did not open the places listed below. Point af360 at the folder your work lives in and it will look there.`,goInEmpty:"Take me in"},setup:{look:"Look for my projects",pickMyself:"I'll pick the folder myself",browse:"Browse folders",looking:"Looking in your usual places…",lookAgain:"Look again",addAnother:"Add another place",whereLooked:"Where I looked:",nothingNew:"nothing new",lookedCapped:(a,b)=>`af360 stopped after ${a} projects to keep this quick, so it did not open ${b} of the places below. Add a folder yourself if something of yours is missing.`,notLooked:"not opened - af360 had already found enough",pickWhere:"Pick where to look:",up:"↑ Up",noFolders:"Nothing here to watch - af360 does not list hidden folders or node_modules.",watchThis:"Watch this folder",alreadyWatching:"Already watching this folder ✓",watch:"Watch",watchAll:"Watch all",watching:"Watching ✓",foundCount:a=>`Found ${a} project${1===a?"":"s"}. Watch the ones you care about:`,adding:"Adding…",noneFound:"I didn't find any new projects in the places below.",previewOff:"Preview mode - config changes are off.",searchFailed:"Something went wrong while searching - try again.",downloadedHeader:"Downloads sharing a name",downloadedNote:"Inside Downloads, or archive-style names - probably not your estate. Watch any that really are yours:",downloadedTag:"Looks like a download",elsewhere:"Not what you expected? Your projects might live somewhere else - a second drive, an external disk.",elsewhereBtn:"Point me somewhere else"}}}};
|