Workflows
Workflow एक trigger और steps के एक पेड़ से बनता है, जो आपके डिवाइस पर एक साझा context के ऊपर चलता है। इस पेज में मॉड्यूल की हर स्क्रीन, 25 triggers, 15 actions, सात तरह के step, expressions, scheduling, secrets, sharing और Free व Pro में क्या-क्या मिलता है, यह सब है।
यह क्या है और इसे कैसे खोलें
Workflows एक full-screen विंडो है जो ऐप के ऊपर खुलती है, pager के पाँच पेजों में से एक नहीं। Workflow आपके डिवाइस पर सेव होता है और वहीं चलता है: एक main trigger (और पाँच तक अतिरिक्त) और सात तरह के steps का एक पेड़। Scheduled runs Android के WorkManager से चलते हैं; जब तक कोई भी run ज़िंदा है, PocketCode Stop बटन वाली एक notification रखता है।
इसे खोलने के तरीके
| आप कहाँ हैं | आप क्या टैप करते हैं | क्या खुलता है |
|---|---|---|
| navigation bar की Tools शीट | cells की दूसरी पंक्ति में Workflows | मॉड्यूल, अपनी welcome स्क्रीन पर |
| साइड मेनू | tools श्रेणी में Workflows | मॉड्यूल |
| Home | Workflow runs विजेट की कोई भी पंक्ति (विजेट तभी दिखता है जब runs हों) | मॉड्यूल |
| किसी run की notification, या किसी scheduled workflow की वह सूचना जो शुरू नहीं हो सका | उसे टैप करें | उस run का detail, या उस workflow का एडिटर |
| AI चैट का activity पैनल | किसी workflow run की पंक्ति | मॉड्यूल |
| ऐप के बाहर | एक link: pocketcode://workflows, pocketcode://workflows/run/<runId>, pocketcode://workflows/<workflowId> या pocketcode://workflows/import?url=<https address> | मॉड्यूल, वह run, वह workflow, या import शीट। link सिर्फ़ एक स्क्रीन खोलता है: वह अपने आप कुछ नहीं चलाता, मिटाता या डाउनलोड करता |
विंडो कैसे व्यवहार करती है
- मॉड्यूल अपनी अलग विंडो है, इसलिए खुले रहने तक आपको ऐप का बाकी हिस्सा नहीं दिखता। Back एक स्तर ऊपर जाता है: एडिटर से सूची, run detail से history या tabs, secrets से tabs, tabs से welcome स्क्रीन, और welcome स्क्रीन मॉड्यूल बंद कर देती है।
- चौड़ी विंडो में (840 dp चौड़ी और 480 dp ऊँची या अधिक, जैसे टैबलेट) सूची बाईं ओर रहती है और एडिटर, history या run detail दाईं ओर खुलता है। Step settings पैनल (360 dp चौड़ा) तभी इस्तेमाल होता है जब एडिटर के बगल में कम से कम 400 dp बचे हों; वरना step settings शीट के रूप में खुलती हैं।
- Workflow को मॉड्यूल खोले बिना भी शुरू किया जा सकता है: home screen shortcut, Quick Settings tile या सिस्टम के Share मेनू से (देखें “चलाना और देखना”)।

आप नहीं कर सकते, और क्यों
- इसे command palette से खोलना: palette में Workflows का कोई command नहीं है, और Workflows pager का कोई पेज भी नहीं है।जानबूझकर
स्क्रीन मैप
मॉड्यूल की हर स्क्रीन, शीट और डायलॉग के लिए एक पंक्ति, और वह कहाँ से आती है।
| स्क्रीन | वहाँ कैसे पहुँचें | आप क्या कर सकते हैं |
|---|---|---|
| Welcome स्क्रीन | मॉड्यूल खोलना; tabs से Back | My Workflows, Generate from prompt (सिर्फ़ portrait में), Templates या CI / CD खोलें (ये दोनों Templates tab खोलते हैं)। |
| Header और tabs | हमेशा सबसे ऊपर | My Workflows, Templates और Activity के बीच बदलें। सिर्फ़ पहले tab पर: Import a workflow from a file, Manage secrets और + बटन (New workflow)। जब कोई चीज़ scheduled runs को रोक सकती है, तब tabs के ऊपर बैनर Scheduled workflows need attention दिखता है। |
| My Workflows tab | पहला tab | खोजें, क्रमबद्ध करें और tag से फ़िल्टर करें; किसी workflow को चालू या बंद करें; चलाएँ, रोकें, schedule करें, उसकी history खोलें, मिटाएँ; long-press मेनू खोलें। |
| Tags डायलॉग | कार्ड के मेनू में Tags | किसी workflow पर 8 तक tags जोड़ें या हटाएँ। |
| Templates tab | दूसरा tab; welcome स्क्रीन के Templates और CI / CD कार्ड | 17 templates खोजें, family के हिसाब से फ़िल्टर करें, preview खोलें, Activate या Add another copy करें। |
| Template preview | template कार्ड को टैप करें | Starts when, steps और What it needs पढ़ें, और ऐसा dry run (Test now) चलाएँ जो कुछ नहीं छूता। |
| Activity tab | तीसरा tab | हर workflow के नवीनतम runs देखें; errors में खोजें; status, तारीख़ और workflow से फ़िल्टर करें; चल रहा run रोकें; कोई run खोलें; फ़िल्टर किए हुए runs को JSON के रूप में कॉपी करें; Delete history। |
| एडिटर | कार्ड को टैप करें, उसके मेनू में Edit, + बटन, किसी scheduled workflow की सूचना, Open in editor | नाम दें; Inputs घोषित करें; Workflow settings और Permissions सेट करें; triggers और filters चुनें; steps का पेड़ बनाएँ; टेस्ट करें; सेव करें। |
| Step settings (सात शीट) | step का पेंसिल आइकन, या Add step | किसी action, If / Else, Loop, In parallel, Try / on failure, Subflow या Wait को कॉन्फ़िगर करें। action पर Reliability और Conditional भी मिलते हैं। |
| Add step palette | एडिटर का + बटन, या किसी branch का + | 15 actions और छह control-flow blocks को नाम, विवरण या output से खोजें; favourites और recents इस्तेमाल करें। |
| Insert data picker | किसी पैरामीटर में इसी नाम का बटन | कोई input, trigger का field, पिछले step का output या status, या जिस block में आप हैं उसका item या error चुनें। |
| Problems पैनल | एडिटर के अंदर, steps के ऊपर | errors, warnings और tips पढ़ें और Go to step से उस step पर जाएँ। |
| Convert to subflow डायलॉग | step के मेनू में Turn into a subflow | नए workflow को नाम दें और step व उसकी सामग्री को उसमें ले जाएँ। |
| Run डायलॉग (run inputs) | ज़रूरी inputs वाले workflow पर Run now; किसी run में Run with these inputs | घोषित inputs भरें (defaults पहले से भरे होते हैं) और Run दबाएँ। |
| Run history | कार्ड पर या उसके मेनू में Run history | किसी एक workflow के runs देखें; Stop this run; कोई run खोलें। |
| Run detail | history या Activity में कोई run; कोई notification; कोई deep link | हर step पढ़ें (परिणाम, अवधि, attempts, error, JSON output), live shell log के साथ चलें, Run again, Repeat from the failed step, Run with these inputs, Analyse with AI, Copy as JSON। |
| Repeat this run डायलॉग | Run again या Repeat from the failed step | पुष्टि करने से पहले देखें कि उस run के बाद क्या बदला है। |
| Schedule शीट (Schedules for …) | कार्ड पर या उसके मेनू में Schedule | schedules की सूची देखें और हटाएँ; presets या Custom cron जोड़ें; Device conditions और If a run is missed सेट करें। |
| Secrets | Manage secrets (key आइकन) | encrypted secrets जोड़ें, उनकी value बदलें या उन्हें मिटाएँ; मिटाने से पहले देखें कि कौन-से workflows उसे इस्तेमाल करते हैं। |
| Share this workflow शीट | कार्ड के मेनू में Share as file | जाँचें कि कौन-से secret fields खाली किए जाएँगे और .pcwf.json फ़ाइल share करें। |
| Import workflow शीट | Import a workflow from a file | फ़ाइल का preview देखें (trigger, steps, छूटे हुए secrets, linter का नतीजा) और उसे बंद अवस्था में सेव करें। |
| A link wants to import a workflow | pocketcode://workflows/import?url=… link | देखें कि वह किस पते से आ रहा है और Download या No thanks चुनें। |
| Generate workflow from prompt और Change … with AI | welcome स्क्रीन पर Generate from prompt; कार्ड के मेनू में Change with AI | किसी automation या बदलाव का वर्णन करें, नतीजा देखें, Save & enable या Open in editor। |
| Irreversible-steps डायलॉग | irreversible steps वाले workflow को चालू करना; Available to AI agent वाले workflow को सेव करना | steps पढ़ें और तय करें: Enable anyway या Allow the AI। |
| Shortcut, tile और Send to a workflow | home screen, Quick Settings और Android का Share मेनू | मॉड्यूल खोले बिना workflow शुरू करें। |
| Run notification | run के ज़िंदा रहने तक notification shade | Step n of m देखें और Stop दबाएँ। |
सूची, tags और templates
मॉड्यूल में तीन tabs हैं: My Workflows, Templates और Activity (आख़िरी वाले की चर्चा “चलाना और देखना” में है)। tabs के ऊपर, सिर्फ़ My Workflows पर, Import a workflow from a file, Manage secrets और + बटन (New workflow) हैं; + बटन एडिटर को एक ख़ाली workflow के साथ खोलता है जो बंद है और जिसका trigger Manual or scheduled है।
Welcome स्क्रीन
मॉड्यूल हमेशा यहीं खुलता है। tabs से Back यहाँ लौटाता है; यहाँ से Back मॉड्यूल बंद करता है।
आप कर सकते हैं
- सूची खोलने के लिए My Workflows (Manage your active automations) टैप करें।
- एक वाक्य में automation बताने के लिए Generate from prompt टैप करें (देखें AI: generate, बदलाव और चैट)। यह कार्ड सिर्फ़ portrait में दिखता है।
- Explore के नीचे Templates या CI / CD टैप करें। दोनों एक ही Templates tab खोलते हैं: CI / CD कुछ फ़िल्टर नहीं करता।
आप नहीं कर सकते, और क्यों
- यहाँ से ख़ाली workflow बनाना: My Workflows का + बटन इस्तेमाल करें।जानबूझकर
- landscape में (करवट पर रखा फ़ोन, आड़ा पकड़ा टैबलेट) Generate from prompt देखना: landscape की welcome स्क्रीन पर सिर्फ़ My Workflows, Templates और CI / CD हैं। कार्ड के मेनू का Change with AI फिर भी काम करता है।अभी नहीं
My Workflows tab
हर workflow के लिए एक कार्ड, जिसमें उसकी status, आख़िरी बार कब चला, health dots और, अगर वह scheduled है, तो अगला run दिखता है।

आप कर सकते हैं
- Search your workflows: यह नाम, विवरण और tags में खोजता है, accents को अनदेखा करके।
- Sort करें: Recently edited, By name, Last run या Problems first से।
- chips से tag द्वारा फ़िल्टर करें (All और आपके tags, सबसे ज़्यादा इस्तेमाल वाले पहले)।
- कार्ड के स्विच से workflow को चालू या बंद करें। irreversible steps वाले workflow को चालू करने पर एक बार पूछा जाता है (देखें “चलाना और देखना”)।
- जिस workflow का main trigger Manual or scheduled है, उसे चलाने के लिए ▶ आइकन टैप करें; चलते समय, किसी भी workflow के लिए, चाहे run किसी ने भी शुरू किया हो, यह आइकन progress ring वाला ■ Stop बन जाता है।
- घड़ी आइकन (Schedule), history आइकन (Run history) और लाल bin (मिटाना) इस्तेमाल करें।
- लाल bin से या कार्ड के मेनू में Delete से workflow मिटाएँ। डायलॉग पूछता है Delete “<name>”? (“The workflow and its schedules are removed. This cannot be undone.”) और workflow तभी मिटता है जब आप Delete दबाते हैं; Cancel सब कुछ जैसा था वैसा रहने देता है।
- कार्ड का मेनू खोलने के लिए उसे long-press करें, या secondary click करें।
आप नहीं कर सकते, और क्यों
- किसी event या shortcut से शुरू होने वाले workflow के कार्ड पर ▶ होना: उनके लिए Run now कार्ड के मेनू में है।जानबूझकर
- स्क्रीन छोड़ने पर search, sort या tag filter बचाकर रखना: filter चीज़ें छिपाता है, इसलिए हर बार दोबारा माँगा जाता है।जानबूझकर

कार्ड क्या दिखाता है
| हिस्सा | यह क्या बताता है |
|---|---|
| Status | Idle, Running, Completed, Failed या Cancelled, और Last run: (या Never run)। |
| Health | पिछले 5 runs के dots और सफलता दर (जैसे 100% success); कोई न हो तो No finished runs yet। |
| Trigger | main trigger का लेबल, जैसे On git push या Manual or scheduled। |
| Next: | अगला scheduled run, अगर workflow का schedule हो। |
| Live progress | चलते समय Step n of m। |
कार्ड का मेनू
| आइटम | यह क्या करता है |
|---|---|
| Edit | एडिटर खोलता है। |
| Change with AI | बदलाव की शीट खोलता है (देखें AI: generate, बदलाव और चैट)। |
| Activate / Deactivate | स्विच जैसा ही। |
| Run now / Stop | किसी भी workflow का run शुरू करता है, उसका trigger कुछ भी हो; ज़रूरी inputs हों तो पहले उन्हें माँगता है। run चलते समय यह आइटम Stop होता है। |
| Schedule | schedule शीट खोलता है। |
| Run history | उस workflow के runs खोलता है। |
| Duplicate | एक बंद प्रति बनाता है, जिसके step ids नए होते हैं और नाम के बाद copy जुड़ता है। |
| Share as file | .pcwf.json export करने वाली शीट खोलता है। |
| Tags | tags डायलॉग खोलता है। |
| Delete | Delete “<name>”? पूछता है और आपके पुष्टि करने के बाद workflow व उसके schedules मिटा देता है। |
Tags
Tags सूची को बिना कुछ हिलाए समूहों में बाँटते हैं। वे workflow की settings में रहते हैं, इसलिए export की गई फ़ाइल के साथ चलते हैं।
आप कर सकते हैं
- कार्ड के मेनू से Tags खोलें, New tag में टाइप करके जोड़ें; उसी डायलॉग से tag हटाएँ।
- My Workflows को tag से फ़िल्टर करें; chips उस क्रम में होते हैं कि कितने workflows उन्हें इस्तेमाल करते हैं।
आप नहीं कर सकते, और क्यों
- एक workflow पर 8 से ज़्यादा tags लगाना (8 tags is the limit.): बीस tags कुछ भी व्यवस्थित नहीं करते।जानबूझकर
Templates tab
17 तैयार workflows, इस आधार पर बँटे हुए कि उन्हें क्या शुरू करता है। हर कार्ड अपना नाम, विवरण, trigger, इस्तेमाल होने वाले action के प्रकार और What it needs दिखाता है: irreversible steps, terminal commands, जुड़ा हुआ deploy provider, key वाला AI provider, नेटवर्क, फ़ाइलें लिखना, खुला हुआ प्रोजेक्ट।
आप कर सकते हैं
- नाम, विवरण, trigger या action से Search templates करें; chips से family के हिसाब से फ़िल्टर करें (All और नीचे की छह families)।
- Activate टैप करें तो एक संपादन-योग्य प्रति मिलती है, जिसकी id नई होती है, जो चालू होती है और My Workflows में दिखती है; अगर आपके पास पहले से है तो Add another copy टैप करें। प्रति template के साथ कुछ साझा नहीं करती।
- preview खोलें, dry run चलाएँ, और बाद में एडिटर में प्रति को संपादित करें।
आप नहीं कर सकते, और क्यों
- gallery में template संपादित करना: आप अपनी प्रति संपादित करते हैं। कैटलॉग 17 templates पर तय है।जानबूझकर
- Activate दबाने पर irreversible steps के बारे में पूछा जाना: यह सवाल तभी आता है जब आप बाद में किसी workflow का स्विच घुमाते हैं। activate करने से पहले What it needs पढ़ लें।अभी नहीं

छह families
| Family | इसमें क्या है |
|---|---|
| When you edit | 3 templates, सभी On file save से शुरू होते हैं। इस family में वह सब भी आता है जो किसी फ़ाइल के बनने, मिटने, नाम बदलने या AI द्वारा बदले जाने से शुरू होता है। |
| When you use git | 5 templates: तीन On git push से और दो On git commit से शुरू होते हैं। |
| Around a deploy | 1 template, जो Deploy completed से शुरू होता है। इस family में Deploy failed भी आता है। |
| When something breaks | 1 template, जो An error was detected से शुरू होता है। इस family में build या run के ख़त्म होने के events भी आते हैं। |
| From your phone | 1 template, जो Text shared to PocketCode से शुरू होता है। इस family में home screen shortcut, Quick Settings tile और share की गई फ़ाइलें भी आती हैं। |
| On demand, or on a schedule | 6 templates जो Manual or scheduled से शुरू होते हैं: आप उन्हें चलाते हैं, या घड़ी बटन से schedule जोड़ते हैं। |
17 templates
| Template | कब शुरू होता है | यह क्या करता है और इसे क्या चाहिए |
|---|---|---|
| Prettier on Save | On file save, .js फ़ाइलों के लिए | आपकी अभी सेव की गई फ़ाइल पर prettier --write चलाता है, पूरे प्रोजेक्ट पर नहीं। |
| Auto-Commit on Kotlin Save | On file save, .kt फ़ाइलों के लिए | सिर्फ़ सेव की गई फ़ाइल को, checked-out branch पर, commit करता है और push नहीं करता। बिना असली बदलाव के सेव करना failure नहीं है। |
| Lint the File You Just Saved | On file save, .ts फ़ाइलों के लिए | दो सेकंड रुकता है, उस फ़ाइल पर eslint चलाता है और सिर्फ़ तब notify करता है जब कुछ मिले। इंतज़ार के दौरान दोबारा सेव करने से लंबित run रद्द हो जाता है। |
| Tests, then Deploy if they pass | On git push | test command चलाता है, और deploy तभी माँगता है जब वह 0 पर exit हो; वरना notify करता है और कुछ deploy नहीं करता। इसके लिए Backend Manager में एक deploy provider जुड़ा होना चाहिए। |
| Auto-Deploy on Push to main | On git push, filter main | main पर push के बाद deploy करता है और status व URL के साथ notify करता है। |
| Tests after Push to main | On git push, filter main | main पर push के बाद test suite चलाता है और उसके exit code के साथ notify करता है (यह push को रोक नहीं सकता)। |
| Test on Commit | On git commit | commit के बाद tests चलाता है और exit code व संदेश के साथ notify करता है। यह सिर्फ़ Projects से किए गए commits पर fire होता है। |
| Test Every Module You Touched | On git commit | commit की directories पर एक loop (अधिकतम 20), जो हर directory के लिए test command एक बार चलाता है; कोई module fail हो तो बाकी नहीं रुकते। सीमा ऊपर जैसी ही: सिर्फ़ Projects से किए गए commits। |
| DB Backup after Deploy | Deploy completed | एक pg_dump चलाता है और फ़ाइल की जानकारी देता है; command को अपने database के हिसाब से बदलें। |
| AI Analysis of a Failed Workflow | An error was detected | error को AI को भेजता है और जवाब के साथ notify करता है। key वाला AI provider चाहिए। कार्ड कहता है कि वह सिर्फ़ workflow failures देखता है; आज यह trigger एडिटर के build व run errors और AI द्वारा चलाए गए fail हुए terminal commands भी सुनता है। |
| Nightly Backup | Manual or scheduled | आपके database को प्रोजेक्ट के एक फ़ोल्डर में dump करता है और सिर्फ़ fail होने पर बताता है। घड़ी बटन से एक schedule जोड़ें (जैसे Daily at 9:00): schedule कोई trigger नहीं है। |
| Test a Branch You Pick | Manual or scheduled | एक branch पूछता है (default main), खुले प्रोजेक्ट में उसे check out करता है और tests चलाता है। यह आपका working tree बदलता है: पहले commit या stash कर लें। |
| Release Notes from the Last Commits | Manual or scheduled | पिछले 20 commits पढ़ता है, AI से release notes माँगता है और RELEASE_NOTES.md लिखता है, पुरानी फ़ाइल को ओवरराइट करते हुए। AI provider चाहिए। |
| Check an Endpoint | Manual or scheduled | एक GET request और status code व समय के साथ एक notification। URL का default है, इसलिए अपना URL सेट करने के बाद यह बिना निगरानी के चल सकता है। |
| Check Three Endpoints at Once | Manual or scheduled | तीन URLs पूछता है और उन्हें parallel में कॉल करता है, तीनों के पूरा होने तक रुकते हुए। हर status code देखने के लिए run खोलें। |
| Deploy, and Tell Me Even If It Fails | Manual or scheduled | deploy के चारों ओर एक Try / on failure, जो दोनों हालात में notify करता है। जुड़ा हुआ deploy provider चाहिए। |
| Save a Shared Link to links.md | Text shared to PocketCode | किसी भी ऐप से share किया गया पेज खुले प्रोजेक्ट की links.md में जोड़ता है, उसे कभी ओवरराइट नहीं करता। |
Template ids कभी नहीं बदलतीं, इसलिए किसी template से बना workflow अपने template से जुड़ाव बनाए रखता है।
Template preview
activate करने से पहले यह देखने के लिए कि template क्या करेगा, उसके कार्ड को टैप करें।
आप कर सकते हैं
- Starts when, branches के साथ steps का पेड़ (If it matches, Otherwise, Try this, If it fails) और What it needs पढ़ें।
- Test now से dry run चलाएँ। अगर template में ज़रूरी inputs हैं तो defaults भर दिए जाते हैं। preview बताता है कि कौन-से steps इसलिए छोड़े गए कि उन्हें simulate नहीं किया जा सकता, या क्या कमी है, और अंत में n steps · n ms · not persisted आता है।
आप नहीं कर सकते, और क्यों
- ऐसे template का dry run करना जिसमें बिना default value वाला ज़रूरी input हो: preview Cannot be tested without: दिखाता है और उस input का नाम बताता है। आज 17 में से कोई template ऐसा नहीं है, और deploy provider या AI key का न होना test को नहीं रोकता।जानबूझकर
एडिटर
एडिटर खोलने के लिए कार्ड टैप करें, उसके मेनू में Edit चुनें, या नए workflow के लिए + बटन दबाएँ। ऊपर से नीचे उसमें ये हैं: नाम और विवरण, Inputs, Workflow settings (collapsed), Permissions (अपना अलग collapsed कार्ड), Enabled और Available to AI agent स्विच, Trigger, और steps के पेड़ व + बटन (Add step) के साथ Steps। टॉप बार में close, Undo, Redo, Test now और Save हैं। Undo पिछले 100 states रखता है और 800 ms के भीतर किए गए एक ही तरह के लगातार edits को मिला देता है। बंद करने (x या Back) पर, अगर workflow सेव हो सकता है तो सेव हो जाता है; अगर उसमें ऐसी सामग्री है जो अभी सेव नहीं हो सकती तो वह Discard changes? पूछता है (Keep editing या Discard); कुछ लिखा न हो तो बस बंद हो जाता है। error होने पर Save बंद रहता है: ख़ाली नाम, कोई step नहीं, ख़ाली ज़रूरी पैरामीटर या अमान्य input।

नाम, स्विच और AI के लिए उपलब्धता
Name और Description सबसे ऊपर हैं। Enabled (बंद होने पर workflow सेव रहता है पर चलता नहीं) और Available to AI agent (चालू होने पर चैट एजेंट उसे tool की तरह चला सकता है) settings के बाद आते हैं, साथ में Description shown to the AI: ख़ाली छोड़ने पर workflow का विवरण इस्तेमाल होता है।
आप कर सकते हैं
- Enabled बदलें: यह कार्ड वाला ही स्विच है।
- Available to AI agent बदलें और Description shown to the AI लिखें। स्विच चालू हो और workflow में irreversible steps हों तो सेव करने पर एक बार Let the AI run this workflow? पूछा जाता है (Allow the AI)।
- जब AI के लिए उपलब्ध workflow में किसी shell step में
{{…}}binding हो, तब Security warning पढ़ें: चैट एजेंट inputs के ज़रिए command में टेक्स्ट डाल सकता है।
आप नहीं कर सकते, और क्यों
- एजेंट से बंद किए गए workflow को कॉल करवाना: workflow चैट में तभी घोषित होता है जब वह Available to AI agent भी हो और Enabled भी।जानबूझकर

Inputs
वे values जो workflow चलते समय माँगता है। आप उन्हें कहीं भी {{var.<name>}} के रूप में पढ़ते हैं।
आप कर सकते हैं
- Add input करें: Name (अक्षर, अंक और
_, अंक से शुरू नहीं, अद्वितीय), Type (Text, Long text, Number, Yes / no, Choice, JSON), Required, Default value, Options (comma से अलग, Choice के लिए), Label और Description (पूछते समय और AI को दिखता है)। inputs को ऊपर-नीचे ले जाएँ या हटाएँ। - Run now से चलाएँ: ज़रूरी inputs वाला workflow Run डायलॉग खोलता है जिसमें defaults भरे होते हैं, इसलिए आप सिर्फ़ वही बदलते हैं जो ज़रूरी है।
आप नहीं कर सकते, और क्यों
- अमान्य input के साथ सेव करना: ख़ाली, अमान्य या दोहराया हुआ नाम, बिना options वाला Choice, या ऐसा default जो options में न हो या संख्या न हो, Save को रोक देता है।जानबूझकर
- ऐसे workflow को अपने-आप शुरू करना जिसके ज़रूरी input का default नहीं है: scheduled run, event, shortcut या tile के पास पूछने के लिए कोई नहीं होता। एडिटर Required with no default से चेतावनी देता है और scheduler एक failed run दर्ज करता है।जानबूझकर
Workflow settings
पूरे run की settings वाला एक collapsible कार्ड (Show / Hide)।
आप कर सकते हैं
- Cap for the whole run (seconds): ख़ाली का मतलब no cap। समय ख़त्म होने पर run ऐसे रद्द हो जाता है जैसे आपने उसे रोका हो।
- When a step fails: Stop या Continue। यह वह default है जो हर step विरासत में लेता है। जिस step में Continue है, वह अपनी पसंद रखता है; लेकिन workflow के Continue पर होने से कोई step फिर से Stop नहीं माँग सकता।
- When a run is already going: Skip the new one (default), Queue it (हर workflow के लिए 10 तक प्रतीक्षा में) या Cancel the one in flight। यह event triggers और scheduled runs पर लागू होता है; manual runs और AI द्वारा शुरू किए गए runs पर इसकी सीमा नहीं है।
- History kept: Runs kept और Days kept। ख़ाली का मतलब default (100 runs, 30 दिन); आप 1 से 1000 runs और 1 से 365 दिन सेट कर सकते हैं। पुराने runs सेव करते समय नहीं, workflow के अगले run के साथ छाँटे जाते हैं।
आप नहीं कर सकते, और क्यों
- Skip the new one द्वारा फेंके गए events का लॉग रखना: default नीति में, workflow चलते समय आया event इतिहास में बिना किसी प्रविष्टि के छोड़ दिया जाता है, जानबूझकर: वरना सेव की बौछार हर event के लिए एक पंक्ति लिखती। (queue या ऐप-स्तर की सीमा से लौटाया गया run कारण के साथ cancelled दर्ज होता है।)जानबूझकर
Permissions
Workflow settings के नीचे अपना collapsible कार्ड, ताकि वह एक फ़ैसला जो किसी step का चलना रोक सकता है, कभी किसी drop-down में न छिपे। कार्ड collapsed हो तब भी सारांश वाक्य दिखता है। डिफ़ॉल्ट रूप से सब कुछ allowed है।
आप कर सकते हैं
- Go out to the network (HTTP requests, AI steps, deploys और git push या pull), Write files (लिखना, checkout और backups; पढ़ना कभी प्रभावित नहीं होता) और Run terminal commands (database backup step का command भी) को चालू-बंद करें।
- Domains it may reach जोड़ें: ख़ाली का मतलब कोई भी domain,
github.comमेंapi.github.comभी आता है, और जो आप paste करते हैं वह साफ़ किया जाता है (scheme, path और port हटा दिए जाते हैं)। - subflows के लिए एक नियम याद रखें: subflow अपनी और अपने parent की permissions के intersection के साथ चलता है, और अगर domain सूचियों में कुछ साझा नहीं है तो नेटवर्क बंद रहता है।
आप नहीं कर सकते, और क्यों
- permissions को सुरक्षा की सीमा मानना: सारांश इस वाक्य पर ख़त्म होता है “This is not a sandbox: anyone who can edit the workflow can change these permissions.” ये आपको लापरवाही से बचाती हैं, किसी दुर्भावनापूर्ण लेखक से नहीं।जानबूझकर
- domain सूची से AI, deploy या git step को सीमित करना: सूची सिर्फ़ HTTP request steps पर लागू होती है, और सारांश यह कहता है।जानबूझकर
- domain सूची से SSRF से सुरक्षा पाना: host name की तुलना होती है, उस address की नहीं जिस पर वह resolve होता है, और HTTP step
127.0.0.1या10.xतक पहुँच सकता है।जानबूझकर

Triggers
एक workflow में एक MAIN trigger होता है और कुल छह तक (Add trigger, Make it the main one)। जब उनमें से दो एक ही event से मेल खाएँ तो एक ही run शुरू होता है और main वाला जीतता है। dropdown में type चुनें: कुल 25 हैं। कई अपने साथ data लाते हैं जिसे आप {{trigger.<field>}} के रूप में पढ़ते हैं; fields तालिकाओं में सूचीबद्ध हैं।
आप कर सकते हैं
- 25 types में से कोई भी चुनें, 6 तक triggers जोड़ें, और किसी एक को main बनाएँ।
- एक typed filter बनाएँ (नीचे) ताकि workflow सिर्फ़ उन events पर शुरू हो जिनकी आपको परवाह है।
- Capture the next event के नीचे Capture दबाएँ: एडिटर 60 सेकंड सुनता है, उस type के अगले event का असली data दिखाता है, और उसे Insert data के लिए sample data के रूप में रखता है।
- On git push को branch से फ़िल्टर करें (जैसे
main): push emit करने वाली चारों जगहें (Projects दो बार, एडिटर का Git पैनल और AI चैट) उस समय checked-out branch भेजती हैं, इसलिए Auto-Deploy on Push to main और Tests after Push to main fire होते हैं।
आप नहीं कर सकते, और क्यों
- Project closed और The AI finished its turn इस्तेमाल करना: वे dropdown में हैं पर ऐप में कुछ भी उन्हें emit नहीं करता, इसलिए उनसे शुरू होने वाला workflow कभी fire नहीं होता। linter चेतावनी देता है (“Nothing in the app emits PROJECT_CLOSED yet, so this workflow will not fire.”) और Capture कहता है “Nothing in the app emits this trigger yet, so waiting longer will not help.”अभी नहीं
- एडिटर के Source Control पैनल या AI चैट से किए गए commit से शुरू करना: On git commit सिर्फ़ Projects से किए गए commit पर fire होता है।अभी नहीं
- चारों system triggers (Home screen shortcut, Quick settings tile, Text shared to PocketCode, File shared to PocketCode) को फ़िल्टर करना: Android उन्हें शुरू करता है और launcher workflows को सिर्फ़ type से चुनता है, इसलिए filter अनदेखा किया जाता है।अभी नहीं
- जब command इंटरैक्टिव terminal में टाइप किया गया हो, तब Command finished से असली exit code पढ़ना: वह event
exitCodeKnownके false होने के साथ आता है।अभी नहीं - सातवाँ trigger या नौवीं condition जोड़ना (6 triggers is as many as fit. और 8 conditions is as many as fit.)।जानबूझकर

.js) के साथ सेव हुआ एक workflow, जिसमें Turn it into a condition है।
25 triggers
Git (2)
| On git push | Projects, एडिटर के Git पैनल या AI चैट से push के बाद। Fields: projectId, projectName, branch (push की गई branch, जैसे main)। |
| On git commit | Projects से किए गए commit के बाद। Fields: projectId, projectName, message, branch। |
Files (4)
| On file save | Fields: filePath, language, linesChanged। |
| File created | Fields: filePath, fileName। |
| File deleted | Fields: filePath, fileName। |
| File renamed | Fields: filePath, previousPath। |
Projects और builds (5)
| Project opened | जब आप कोई प्रोजेक्ट चुनते हैं। Fields: projectId, projectName। |
| Project closed | सूची में है, पर इसे कोई emit नहीं करता: यह कभी fire नहीं होता। |
| Build finished | Fields: status, exitCode, durationMs, output। |
| Run finished | Fields: filePath, runtime, exitCode, output। |
| Command finished | Fields: command, exitCode, output, exitCodeKnown। |
Deploys, data और tools (5)
| Deploy completed | Fields: provider, projectName, status, url। |
| Deploy failed | Fields: provider, projectName, error। |
| Query executed | Fields: data, format, rowCount, columns। |
| API tester response | Fields: url, method, status, durationMs। |
| Design exported | Fields: designId, designName, format। |
Errors और AI (3)
| An error was detected | किसी दूसरे workflow की विफलता, एडिटर के build व run errors, और AI द्वारा चलाए गए उन terminal commands को सुनता है जो 0 के अलावा किसी code से exit होते हैं। कोई workflow कभी ख़ुद को trigger नहीं करता। Fields: source, message, filePath, exitCode, workflowId, workflowName, error। |
| The AI changed a file | AI एजेंट द्वारा लिखी गई फ़ाइल। यह जानबूझकर On file save से अलग है: किसी स्वचालित write को उन automations को fire नहीं करना चाहिए जो आपने अपने काम के लिए बनाए हैं। Fields: filePath, fileName। |
| The AI finished its turn | सूची में है, पर इसे कोई emit नहीं करता: यह कभी fire नहीं होता। |
ऐप और manual (2)
| App opened | जब ऐप foreground में आता है। Field: sessionId। |
| Manual or scheduled | कोई data नहीं। इसे आप ▶ या Run now से शुरू करते हैं, schedule इसी को शुरू करता है, और AI चैट भी इसी को चलाता है। |
Android से (4)
| Home screen shortcut | कोई data नहीं। देखें “चलाना और देखना”। |
| Quick settings tile | कोई data नहीं। |
| Text shared to PocketCode | Fields: text, subject। |
| File shared to PocketCode | Fields: uri, fileName, mimeType। |
Typed filter
trigger के नीचे, Add condition (अधिकतम 8) एक Field (उस trigger के fields), एक Comparison और एक Value देता है। उन्हें All या Any से जोड़ें, और किसी पर भी Not लगाएँ। कोई condition न हो तो एडिटर कहता है “No condition: this trigger fires with every event of its type.” type बदलने पर वे conditions हट जाती हैं जिनका field नए type में नहीं है, और आपको बता दिया जाता है। पुराने free-text filter के साथ सेव हुआ workflow उसे Text filter के रूप में रखता है, जो अब भी काम करता है, और Turn it into a condition के साथ।
| Comparison | यह क्या करता है |
|---|---|
| is | field value के बराबर है। |
| contains | field में value शामिल है। |
| starts with / ends with | field value से शुरू या ख़त्म होता है। |
| matches path | path fields के लिए glob: एक * एक फ़ोल्डर के भीतर रहता है, दो * फ़ोल्डर पार करते हैं, और शुरू का बिंदु extension से मेल खाता है। |
| is one of | field comma से अलग की गई कई values में से एक है। |
| is empty | field में कोई value नहीं है। |
| is greater than / is less than | संख्यात्मक तुलना। अगर कोई भी पक्ष संख्या नहीं है तो condition मेल नहीं खाती। |
Steps: पेड़, कार्ड और palette
Steps सूची एक पेड़ है: blocks, blocks के अंदर रहते हैं। Steps को 2, 2.1 क्रमांक मिलते हैं; else branch 2.e1, catch branch 2.c1 और parallel branch 2.<n> लिखी जाती है। Blocks को collapse किया जा सकता है (Collapse / Expand), और बहुत गहराई में बैठे step को 5 levels deep जैसी सूचना मिलती है, जो कहती है कि वह फिर भी उसी तरह चलता है पर फ़ोन की स्क्रीन पर समाता नहीं।
आप कर सकते हैं
- palette खोलने के लिए + बटन (Add step) टैप करें: नाम, विवरण या output से खोजें (“Name, description or output (stdout, url…)”), कोई category chip चुनें (Shell, Git, Deploy, AI, Data, HTTP, Files, Control, Notify, Other), और favourites व पिछले 5 recents इस्तेमाल करें। हर प्रविष्टि दिखाती है कि वह क्या देती है (Gives: …) और irreversible, runs commands, network, writes files या Cannot be simulated का निशान लगाती है। नया step आपके चुने slot के अंत में आता है और उसकी settings खुल जाती हैं।
- हर कार्ड पर: reorder handle, क्रमांक, शीर्षक और एक पंक्ति का सारांश, एक On / Off स्विच (Off step छोड़ दिया जाता है और failure नहीं गिना जाता), If this step fails chip, Test this step, पेंसिल (settings खोलती है और step को चुनती है) और ⋮ मेनू।
- मेनू में: Move up, Move down, Copy step, Paste below (तभी सक्रिय जब clipboard में PocketCode steps हों, इसलिए आप किसी दूसरे workflow में paste कर सकते हैं), Duplicate, Note (यह सिर्फ़ एडिटर में दिखता है), Turn into a subflow और Delete।
- pinned data पहचानें: जिस step का output pinned है, उसके कार्ड पर sample data दिखता है।
आप नहीं कर सकते, और क्यों
- किसी step को दूसरे block में खींचना: handle step को उसकी अपनी सूची में हर 48 dp खिंचाव पर एक स्थान आगे-पीछे करता है; मेनू के Move up और Move down इस्तेमाल करें।जानबूझकर
- flow को graph के रूप में बनाना, या N-way switch या मुक्त merge इस्तेमाल करना: flow एक nested पेड़ है, If / Else में ठीक दो branches होती हैं और In parallel अपनी branches को तीन नीतियों में से एक से जोड़ता है।जानबूझकर
- ऐसे step को संपादित करना जिसे ऐप नहीं जानता (Unknown step, किसी नए वर्ज़न द्वारा लिखा हुआ): वह जैसा है वैसा रखा जाता है और उसे सिर्फ़ हिलाया या मिटाया जा सकता है।जानबूझकर


2.1 और 2.2, Otherwise के नीचे 2.e1। Deploy को simulate नहीं किया जा सकता, इसलिए वह Run this step for real देता है।Step के सात प्रकार
| प्रकार | यह क्या करता है | आप क्या सेट करते हैं |
|---|---|---|
| Action | 15 actions में से एक चलाता है। | action के parameters। सिर्फ़ action पर: Reliability (retry, timeout) और Conditional (When)। |
| If / Else | condition सच होने पर If it matches और न होने पर Otherwise चलाता है। | AND, OR और NOT वाला condition tree। |
| Loop | किसी सूची के For each item के लिए अपने steps दोहराता है। | List to go through, Name for each item (इसे {{item.<name>}} के रूप में पढ़ें), Most iterations (default 100, कभी 10 000 से ज़्यादा नहीं) और Iterations at once (1 का मतलब एक के बाद एक चलाना, अधिकतम 16)। |
| In parallel | कई branches को एक साथ चलाता है। | Branches (एक जोड़ें, या कोई ख़ाली हटाएँ) और When do we move on: When they all finish, With the first one to finish या With the first one that works। आख़िरी दो हारने वाली branches को बीच में ही रद्द कर देते हैं, उनके side effects के साथ। |
| Try / on failure | Try this चलाता है; उसमें कुछ भी fail हो तो If it fails चलाता है। | Name for the error (default error, {{var.error}} के रूप में पढ़ा जाता है, अधिकतम 4 096 वर्ण)। |
| Subflow | आपकी दी हुई values के साथ दूसरा workflow चलाता है और उसका आख़िरी नतीजा इस्तेमाल करता है। | Workflow to run और Values for the subflow। अधिकतम 5 स्तर गहरा, कोई recursion नहीं, और permissions parent की permissions के साथ intersection होती हैं। |
| Wait | workflow को कुछ समय के लिए, या किसी घटना के होने तक रोकता है। | मिलीसेकंड में समय, या Wait for something to happen के साथ Event to wait for, एक वैकल्पिक filter (trigger जैसा ही नियम) और Cap in milliseconds (अगर कुछ सेट न करें तो 5 मिनट)। |
Actions
पंद्रह actions, palette की आठ categories में। हर एक उन outputs की सूची देता है जिन्हें आप {{step.<id>.output.<key>}} के रूप में पढ़ सकते हैं; नीचे के नाम वही keys हैं। लेबल वही अंग्रेज़ी वाले हैं जो palette दिखाता है।
Shell (1)
| Run terminal command | terminal के shell में एक command चलाता है। Parameters: command, cwd, env, failOnNonZero (default चालू), timeoutMs। Outputs: command, exitCode (अगर cap ने उसे मार दिया तो -1), stdout, stderr (हर एक 64 KB तक सीमित, शुरू और अंत रखे जाते हैं), durationMs, timedOut। |
Git (1)
| Git operation | सात operations: status, commit, push, pull, checkout, log, diff। Parameters: operation, message, branch (अक्षर, अंक, ., _, /, -), n (default 20), path, projectPath। Outputs: sha, branch, changedFiles, ahead, behind, text। सिर्फ़ push (या binding से आने वाला operation) irreversible गिना जाता है; commit, pull और checkout फ़ाइलें लिखते हैं; status, log और diff कुछ नहीं छूते। diff प्रति फ़ाइल है। |
Deploy (1)
| Trigger deploy | render, netlify, digitalocean या railway पर deploy trigger करता है और provider के फ़ैसले का इंतज़ार करता है (default 15 मिनट, 1 से 60)। Parameters: provider, project, timeoutMs; branch और env दर्ज होते हैं पर माने नहीं जाते। Outputs: status, url, provider, projectName, logsTail, durationMs, timedOut। इसे simulate नहीं किया जा सकता: Test now इसे छोड़ देता है और step test Run this step for real देता है। Free पर, जब उस प्रोजेक्ट का कोई deploy पहले से चल रहा हो (queued, building या deploying), तो यह “Upgrade required to trigger another active deploy” के साथ fail होता है, और आपको एक सूचना दिखती है कि इस action के लिए PocketCode Pro चाहिए। |
AI (2)
| Ask AI to analyze | आपके सक्रिय AI provider को एक prompt भेजता है, वैकल्पिक context के साथ। Parameters: prompt, context, outputFormat (TEXT या JSON), schema। Outputs: text, json (सिर्फ़ JSON mode में) और tokensEst, tokens का स्थानीय अनुमान, provider की गिनती नहीं। |
| Ask AI to generate | वही, पर code generation के रूप में पूछा गया। Parameters: prompt, context, language। Outputs: text, tokensEst। यह फ़ाइलें नहीं लिखता; इसके text के साथ Write file इस्तेमाल करें। |
Data (4)
| Query database | किसी नामित connection पर SQL चलाता है: neon, supabase, turso, upstash या cloudflare (D1), या आपके सहेजे हुए किसी PostgreSQL connection पर (नाम या id से)। Parameters: connection, sql, maxRows (default 200, अधिकतम 5 000), allowWrites। Outputs: rows, rowCount, columns, truncated, durationMs, message, writes। write क्रियाओं (DROP, DELETE, TRUNCATE, UPDATE, INSERT, ALTER, CREATE, GRANT) वाली query, या binding से आने वाला SQL, irreversible गिना जाता है और allowWrites चालू न हो तो fail होता है। palette का संकेत इसे read-only कहता है; यह है नहीं। |
| Backup database | आपका अपना backup command चलाता है (जैसे pg_dump); command न हो तो यह सिर्फ़ PocketCode का आंतरिक database कॉपी कर सकता है। Parameters: connection, command, outputDir, timeoutMs (10 मिनट)। Outputs: filePath, sizeBytes, tables, exitCode, stdout, stderr, timedOut, durationMs। |
| Set variable | Parameters: name, value। Outputs: name, value। यह अगले steps के लिए {{var.<name>}} लिखता है (value को {{step.<id>.output.value}} के रूप में भी पढ़ा जा सकता है)। Dry run (Test now) में variable नहीं लिखा जाता। |
| Transform value | filters के साथ एक expression का मान निकालता है और value लौटाता है। कोई side effect नहीं, और dry run असली run जैसा ही करता है। |
HTTP (1)
| HTTP request | Parameters: method, url, headers (JSON), authorization (एक secret), body, contentType, timeoutMs (1 000 से 120 000, default 30 000), followRedirects। Outputs: status, headers, body (128 KiB तक), json, durationMs, bodyTruncated, finalUrl, redirects। सिर्फ़ http और https; 5 redirects तक, और credentials कभी दूसरे origin तक नहीं जाते। |
Files (4)
| Read file | Parameter: path। Outputs: content (128 KiB तक), sizeBytes, exists, contentTruncated, filePath। |
| Write file | Parameters: path, content, append। Outputs: filePath, sizeBytes, bytesWritten, overwritten। इसे कभी irreversible नहीं गिना जाता, ओवरराइट करते समय भी नहीं। |
| File exists | Parameter: path। Outputs: exists, isDirectory, sizeBytes, filePath। |
| Open file in editor | Parameters: file, line। Outputs: opened (सिर्फ़ तभी true जब एडिटर 1.5 सेकंड में पुष्टि करे, इसलिए ऐप के background में होने पर false), file, line। |
Notify (1)
| Show notification | Parameters: title, message, deepLink (सिर्फ़ pocketcode://workflows/…), importance (LOW, DEFAULT, HIGH)। सिर्फ़ HIGH Workflows · alerts channel इस्तेमाल करता है; बाकी चुप रहने वाले Workflows channel में जाते हैं। Outputs: notificationId, delivered (इसका मतलब है कि event notification सिस्टम तक गया, यह नहीं कि आपने उसे देखा; dry run में false), deepLink, importance। |
- फ़ाइल पढ़ने या लिखने वाली तीन file actions (Read file, Write file, File exists) प्रोजेक्ट की root तक सीमित हैं; Run terminal command और Git operation नहीं।
- palette में irreversible उस type का सबसे बुरा मामला दिखाता है; पुष्टि का डायलॉग, step test और Problems पैनल उन values को देखते हैं जो आपने सचमुच टाइप कीं।
आप नहीं कर सकते, और क्यों
- किसी भी provider पर deploy करना: सिर्फ़
render,netlify,digitaloceanऔरrailwayके पास deploy trigger करने वाली call है, और branch व environment माने नहीं जाते।थर्ड पार्टी - ऐसे सहेजे हुए connection को query करना जो remote PostgreSQL नहीं है (embedded local database, MySQL और बाकी): workflow से सिर्फ़
neon,supabase,turso,upstash,cloudflare(D1) और आपके सहेजे हुए PostgreSQL connections तक पहुँचा जा सकता है।थर्ड पार्टी - बिना command के कोई भी database backup करना:
commandन हो तो step सिर्फ़ PocketCode का आंतरिक database कॉपी कर सकता है।अभी नहीं
Conditions: If / Else और When
If / Else step में एक condition tree और दो branches होती हैं। Action प्रकार का step Conditional के नीचे When (expression) भी रख सकता है: expression के ख़ाली, false, 0 या null निकलने पर step छोड़ दिया जाता है। When सिर्फ़ action steps पर होता है।
आप कर सकते हैं
- Add condition और Add group से condition बनाएँ, AND, OR और NOT से जोड़ें, और Group it व Remove इस्तेमाल करें। ख़ाली group हमेशा मेल खाता है।
- It matches या It does not match देखें, जो आपके pinned sample data से जाँचा जाता है, अगले run से नहीं।
आप नहीं कर सकते, और क्यों
- When को loop, parallel, try, subflow, wait या If / Else पर लगाना: यह सिर्फ़ action step के पास है।जानबूझकर
| Operator | कब सच होता है |
|---|---|
| equals / is not | दोनों values बराबर हैं, या नहीं हैं। |
| greater than / less than | संख्यात्मक तुलना। |
| greater or equal / less or equal | संख्यात्मक तुलना, बराबरी समेत। |
| contains / starts with / ends with | टेक्स्ट की तुलना। |
| matches | एक regular expression (उसे छोटा रखें)। |
| is one of | value comma से अलग की गई कई values में से एक है। |
| is null / is empty / is true | value की ख़ुद जाँच करता है। |
| always | हमेशा सच। |
Variables और expressions
कोई भी parameter एक literal या दोहरे braces के बीच का expression लेता है: {{ root.field[0] | filter:"arg" | filter }}। Insert data एक picker खोलता है (Inputs, Trigger, Earlier steps, Step status, और जिस block में आप हैं उसका item या error), इसलिए आपको step id कभी हाथ से टाइप नहीं करनी पड़ती; वह चेतावनी देता है Inside a branch: it may not have run और “Inside a loop: only the last iteration is left”। जो reference resolve नहीं होता वह ख़ाली string देता है। \{{ एक literal {{ लिखता है। Filter के arguments हमेशा दोहरे quotes में जाते हैं: replace:a:b syntax error है, replace:"a":"b" चलता है।
आप कर सकते हैं
- किसी भी reference के बाद
|से filters जोड़ें। - किसी output को sample data के रूप में pin करें, ताकि Insert data और If / Else उससे preview कर सकें।
आप नहीं कर सकते, और क्यों
- expression में अपने functions जोड़ना या code चलाना: 13 filters की सूची बंद है, कोई user functions नहीं और कोई
evalनहीं; बहुत लंबे paths, filter chains या braces के बीच का टेक्स्ट parse होते समय अस्वीकार कर दिए जाते हैं।जानबूझकर
| Expression | यह क्या बनता है |
|---|---|
{{var.<name>}} | घोषित input (Run with these inputs की values और schedule या shortcut के defaults समेत), Try / on failure का error name, वे values जो Subflow अपने child को देता है, और वह value जो Set variable step लिखता है (dry run में नहीं लिखी जाती)। |
{{step.<id>.status}} | SUCCESS, FAILURE, SKIPPED, TIMED_OUT, या चल रहे step के लिए RUNNING। |
{{step.<id>.output}} | step का output map, या उसका कोई एक field: {{step.<id>.output.json.items[0].name}} [n] से JSON के अंदर जाता है। |
{{step.<id>.error}} | fail हुए step का error संदेश। |
{{item.<alias>}} | Loop का मौजूदा item (सिर्फ़ alias लिखना भी चलता है)। |
{{trigger.<field>}} | उस event का data जिसने run शुरू किया; {{trigger.type}} बताता है कि workflow का कौन-सा trigger था (event न होने पर MANUAL)। |
{{secret.<NAME>}} | सेव किया हुआ secret। यह अंतिम बिंदु है: आप इसके भीतर नहीं जा सकते। |
13 filters
| Filter | यह क्या करता है |
|---|---|
lines | टेक्स्ट को पंक्तियों में बाँटता है; आख़िर की एक newline हटा दी जाती है। |
first / last | सूची का पहला या आख़िरी item, या टेक्स्ट का पहला या आख़िरी वर्ण। ख़ाली पर fail होता है। |
trim / upper / lower | spaces हटाता है, बड़े अक्षर, छोटे अक्षर। |
length | सूची के items या टेक्स्ट के वर्णों की संख्या। |
json | value को JSON के रूप में दिखाता है। |
default:"x" | value के न होने या ख़ाली होने पर विकल्प। |
split:"," | टेक्स्ट को किसी separator पर बाँटकर सूची बनाता है। |
join:"," | सूची को separator से जोड़ता है। |
date:"HH:mm" | epoch milliseconds या ISO date की तारीख़ को डिवाइस के time zone में format करता है। |
replace:"a":"b" | टेक्स्ट बदलता है; जिस टेक्स्ट को बदलना है वह ख़ाली नहीं हो सकता। |
उदाहरण
{{step.<id>.output.stdout | lines | first | trim}} | किसी command के output की पहली पंक्ति, trim की हुई। |
{{step.<id>.output.json.items[0].name | default:"none"}} | JSON response के भीतर का एक field, विकल्प के साथ। |
{{trigger.filePath | replace:"src/":""}} | सेव की गई फ़ाइल का path, बिना prefix के। |
Loops, parallel, try / on failure और subflows
पेड़ के blocks, और व्यवहार में मायने रखने वाली सीमाएँ।
आप कर सकते हैं
- Loop: 10 000 iterations तक (default 100) और एक साथ 16 तक; Iterations at once 1 से ऊपर हो तो वे batches में चलते हैं।
- In parallel: When they all finish हर branch का इंतज़ार करता है और एक के fail होने पर fail होता है; With the first one to finish और With the first one that works बाकियों को रद्द कर देते हैं।
- Try / on failure: failure वाली branch संदेश को
{{var.<name>}}में पढ़ती है; failure फिर भी history में दिखती है। - Subflow: हिस्सा एक बार बनाएँ और कई workflows से बुलाएँ; Turn into a subflow एक step और उसके अंदर की हर चीज़ को एक नए, बंद workflow में निकालता है, और उसकी जगह एक subflow step छोड़ता है, साथ में उन references की सूची देता है जो टूट जाएँगे (They will resolve to nothing, quietly.)।
आप नहीं कर सकते, और क्यों
- subflows को 5 स्तर से ज़्यादा nest करना या किसी workflow से ख़ुद को बुलवाना: recursive subflow छोड़ दिया जाता है और linter चेतावनी देता है।जानबूझकर
- 10 000 से ज़्यादा बार loop करना या एक साथ 16 से ज़्यादा iterations चलाना, field में चाहे कुछ भी लिखा हो।जानबूझकर
Retry, timeout और failure
किसी action step की settings खोलें और Reliability फैलाएँ। ये fields सिर्फ़ action steps पर होते हैं।
आप कर सकते हैं
- Max attempts (1 का मतलब कोई retry नहीं), Wait between retries (टेक्स्ट field:
EXPONENTIAL,LINEARयाFIXED), Initial delay (ms), Max delay (ms) और Timeout (ms) (ख़ाली का मतलब कोई सीमा नहीं) सेट करें। - इस पर भरोसा करें कि timeouts को भी retry किया जाता है: timeout हुआ step
TIMED_OUTचिह्नित होता है और, अगर attempts बचे हों, तो किसी भी दूसरी failure की तरह दोबारा चलता है। - If this step fails चुनें: Stop (run यहीं ख़त्म), Continue (आगे बढ़ता है और failure history में रहती है) या Use the workflow setting। Continue के साथ step लाल रहता है और run फिर भी हरे पर ख़त्म हो सकता है।
- नतीजा run detail में पढ़ें: succeeded on attempt n, या अगर कभी नहीं हुआ तो n attempts।
आप नहीं कर सकते, और क्यों
- loop, parallel या किसी और control block पर retry या timeout लगाना: ये fields सिर्फ़ action steps पर होते हैं। पूरे workflow की सीमा Workflow settings में है।जानबूझकर
Step टेस्ट करें, data pin करें, workflow टेस्ट करें
आप पूरा workflow चलाए बिना भी चीज़ें आज़मा सकते हैं।
आप कर सकते हैं
- Test this step टैप करें: यह step को आपके pinned data को context मानकर simulate करता है और Simulated in n ms: nothing was touched. कहता है। जब कोई reference ऐसे step की ओर इशारा करे जिसका कुछ pinned नहीं है, तो यह No pinned output for: … की चेतावनी देता है।
- जब action को simulate नहीं किया जा सकता (आज सिर्फ़ Trigger deploy), या आपकी टाइप की हुई values irreversible होंगी, तो बटन Run this step for real बन जाता है। यह पहले पूछता है: सिर्फ़ वही step चलता है, workflow का बाकी हिस्सा अछूता रहता है और run history में सेव नहीं होता।
- किसी step के output को picker और previews के लिए sample data के रूप में Pin करें (और Unpin करें)। Pinned outputs डिवाइस पर रहते हैं, हर workflow में 50 steps तक, और 14 दिन बाद हटा दिए जाते हैं।
- पूरे workflow का dry run करने के लिए Test now टैप करें (या
Ctrl+Enterदबाएँ), वैसे जैसा वह स्क्रीन पर है, जैसा आख़िरी बार सेव हुआ था वैसा नहीं। यह Test passed या Test failed और n steps · n ms · not persisted दिखाता है। dry run कोई run सेव नहीं करता और कोई event fire नहीं करता।
आप नहीं कर सकते, और क्यों
- किसी control-flow block को अकेले टेस्ट करना: “Only action steps can be tested on their own: testing a branch or a loop means running what is inside it.”जानबूझकर
- dry run में secrets इस्तेमाल करना: वे resolve नहीं होते, और step छोड़ दिया जाता है, यह बताते हुए कि वह किन्हें इस्तेमाल करता है।जानबूझकर
- pinned outputs को export या sync करना: वे डिवाइस पर ही रहते हैं।जानबूझकर
Problems
linter आपके edit करते समय चलता है और Errors, Warnings और Tips की सूची देता है, हर एक की गिनती के साथ। हर पंक्ति में rule का नाम, step (Step: … या Whole workflow) होता है और Go to step होता है। कुछ न हो तो Nothing to fix. लिखा आता है। वही linter AI के generate किए हुए और आपके import किए हुए की भी जाँच करता है।
आप कर सकते हैं
- चेतावनी जिस चीज़ की ओर इशारा करे उसे ठीक करें, या छोड़ दें: सिर्फ़ वे तीन rules जो errors हैं Save को रोकते हैं।
- Go to step से सीधे step पर जाएँ।
आप नहीं कर सकते, और क्यों
- error के साथ सेव करना (ख़ाली नाम, कोई step नहीं, ख़ाली छोड़ा गया ज़रूरी parameter): तीन error rules वे हैं जो workflow को अपठनीय या असेव्य बना देते। बाकी सब, permission rules समेत, सिर्फ़ चेतावनी देते हैं और रोकते नहीं, क्योंकि जो नेटवर्क बंद करता है वह अक्सर उसका इस्तेमाल करने वाला step हटाने से पहले ऐसा करता है।जानबूझकर

34 rules
| Group | Rules |
|---|---|
| Structure (6) | Error: workflow का नाम नहीं है; कोई step नहीं है। Warning: ख़ाली branch; ऐसा step जो कभी चल नहीं सकता। Tip: एक ही branch वाला parallel; बहुत गहरी nesting। |
| Parameters (3) | Error: ज़रूरी parameter ख़ाली है। Warning: ऐसा parameter जो action के पास है ही नहीं; ऐसा action type जिसे कोई installed host नहीं संभालता। |
| References (7) | सब warnings: ऐसा reference जो कभी resolve नहीं होगा; ऐसा जो बाद में चलने वाले step को पढ़ता है; ऐसा output जो step लौटाता ही नहीं; ऐसा trigger field जो trigger साथ नहीं लाता; बिना घोषित variable; बंद किए गए step का reference; ऐसा reference जो बिना quote के shell command में जाता है। |
| Triggers (3) | Warning: ऐसा trigger जिसे कोई emit नहीं करता; ऐसे field पर filter जो trigger साथ नहीं लाता। Tip: एक ही trigger दो बार, एक ही filter के साथ। |
| Loops (3) | सब warnings: जाने के लिए कोई सूची नहीं; alias पहले से लिया हुआ; alias नहीं। |
| Reliability (2) | Warnings: बेतुका timeout; बेतुका retry। |
| Security (2) | Warnings: plain text में टाइप किया गया secret; सिर्फ़ अपने-आप चलने वाले workflow में irreversible step। |
| Permissions (4) | Warnings: ऐसा step जो नेटवर्क पर जाता है, फ़ाइलें लिखता है या command चलाता है जबकि वह permission बंद है; ऐसा step जो सूची में न होने वाले domain पर जाता है। |
| Coherence (4) | Warnings: बिना विवरण के AI के लिए उपलब्ध; event trigger पर बिना default वाला ज़रूरी input; recursive subflow; ऐसा subflow जो कहीं इशारा नहीं करता। |
चलाना और देखना
हर run ख़त्म होने पर history में लिखा जाता है: हर step का नतीजा, उसमें कितना समय लगा, कितने attempts लगे और उसका error। कितना रखा जाए, यह हर workflow के लिए Workflow settings में तय होता है: 1 से 1 000 runs और 1 से 365 दिन (defaults 100 runs और 30 दिन हैं)। जो कुछ भी run शुरू कर सकता है, वह उसे रोक भी सकता है।
Run शुरू करना और रोकना
run किसी trigger से, ▶ या Run now से, किसी schedule से, AI चैट से, या shortcut, tile या Share मेनू से शुरू होता है। सभी workflows को मिलाकर ऐप एक बार में 8 runs तक चलाता है और 16 तक को 120 सेकंड तक इंतज़ार में रखता है; उसके आगे run “the app was already running too many workflows at once” कारण के साथ cancelled दर्ज होता है।
आप कर सकते हैं
- जिस workflow का main trigger Manual or scheduled है उसके कार्ड पर ▶ टैप करें, या किसी भी workflow के मेनू में Run now। अगर उसमें ज़रूरी inputs घोषित हैं तो पहले Run डायलॉग खुलता है (“This workflow needs these values before it can run.”), defaults भरे हुए।
- इसे कार्ड, मेनू, history, Activity, run detail या notification से रोकें। run Cancelled के रूप में ख़त्म होता है।
- irreversible steps वाले workflow को चालू करें: “This workflow does something irreversible” शीर्षक वाला डायलॉग उन्हें सूचीबद्ध करता है (Step n · …) और आप Enable anyway चुनते हैं। यह हर workflow के लिए एक बार पूछा जाता है और डिवाइस पर याद रखा जाता है, sync या export नहीं होता।
- Available to AI agent चालू और irreversible steps वाले workflow को सेव करें: Let the AI run this workflow? (Allow the AI), यह भी एक बार। उस अनुमति के बिना एजेंट का tool उसे चलाने से मना करता है और model को बताता है कि किससे पूछना है।
आप नहीं कर सकते, और क्यों
- template पर Activate दबाने, generator में Save & enable इस्तेमाल करने, या फ़ाइल import करने पर irreversible steps के बारे में पूछा जाना (import बंद अवस्था में आता है, और सवाल तब आता है जब आप उसे चालू करते हैं)।अभी नहीं
- फ़ाइल ओवरराइट होने की चेतावनी पाना: Write file को कभी irreversible नहीं गिना जाता, ओवरराइट करते समय भी नहीं; उसका
overwrittenoutput बाद में बता देता है। सिर्फ़ Git काpush(या binding से आने वाला Git operation) और write क्रियाओं वाला SQL (या binding से आने वाला SQL) गिने जाते हैं।जानबूझकर
Activity tab
हर workflow के नवीनतम runs, चल रहे पहले, एक बार में 50।
आप कर सकते हैं
- Search in the errors: यह run के संदेश और हर step के संदेश में खोजता है।
- status (Completed, Failed, Cancelled), तारीख़ (Any date, Today, Last 7 days, Last 30 days) और workflow (Every workflow, जिनमें वे workflows भी हैं जिन्हें आप पहले मिटा चुके हैं) से फ़िल्टर करें; Clear फ़िल्टर हटा देता है।
- Load more 50 और जोड़ता है, चल रहे run को रोकें, और किसी run को टैप करके उसका detail खोलें।
- Export as JSON से फ़िल्टर किए हुए runs को JSON के रूप में कॉपी करें: यह टेक्स्ट को clipboard में रखता है।
- पुष्टि के बाद Delete history (“The runs disappear. The workflows stay as they are.”), सभी workflows के लिए या सिर्फ़ फ़िल्टर किए हुए एक के लिए।
आप नहीं कर सकते, और क्यों
- सबसे नए 500 runs से आगे पीछे जाना: “That is as far back as this screen goes. Narrow the filter to find something older.”जानबूझकर
- history को फ़ाइल में export करना: Export as JSON सिर्फ़ टेक्स्ट कॉपी करता है।अभी नहीं
एक workflow की Run history
कार्ड पर Run history उस workflow के runs की सूची देता है, सबसे नया पहले।
आप कर सकते हैं
- हर run की status और समय, steps की संख्या, Triggered by … और, रद्द हुए run के लिए, Cancelled by … देखें; जो run अभी चल रहा है उस पर In flight होता है।
- Stop this run, या detail के लिए कोई run खोलें।
- अभी कुछ न हो तो यह कहता है “No runs yet — trigger this workflow to start a history.”
आप नहीं कर सकते, और क्यों
- हर cancellation कारण को शब्दों में पढ़ना: ऐप the previous run was still going, the queue was full और “the app was already running too many workflows at once” का अनुवाद करता है; बाकी कारण (
user,timeout,superseded,scope) कच्चे शब्द के रूप में दिखते हैं।अभी नहीं
Run detail
history, Activity, run notification या deep link से कोई run खोलें।
आप कर सकते हैं
- header (status, अवधि, trigger, किसने रोका) और हर step पढ़ें: नतीजा, duration, succeeded on attempt n या n attempts, error, और JSON पेड़ के रूप में output जिसे आप फैला और कॉपी कर सकते हैं। जो step run ख़त्म होने के समय चल रहा था उस पर Interrupted लिखा आता है; जो step बाद में workflow से हटा दिया गया उस पर This step is no longer in the workflow.
- run चलते समय shell का Live output देखें, उसमें खोजें (Search the log) और उसे कॉपी करें (Copy the log)। हर step की सिर्फ़ आख़िरी 500 पंक्तियाँ रखी जाती हैं, और पुरानी पंक्तियाँ हटने पर स्क्रीन यह बताती है।
- Analyse the whole run with AI, या किसी एक step पर Analyse with AI: यह पहले से लिखे prompt के साथ चैट खोलता है।
- Copy as JSON run को कॉपी करता है।
आप नहीं कर सकते, और क्यों
- ख़त्म हो चुके run का shell log पढ़ना: “The shell log is not kept in the history: it is only visible while the run is going.”जानबूझकर
- ऐसा run ढूँढना जो सिस्टम के ऐप को मार देने के समय चल रहा था: run एक बार, ख़त्म होने पर लिखा जाता है, और start-up पर कुछ भी वापस नहीं लाया जाता, इसलिए बाधित run कोई पंक्ति नहीं छोड़ता।जानबूझकर
- सेव किया हुआ secret देखना: run लिखे जाते समय values
•••से ढक दी जाती हैं, इसलिए वे database में भी नहीं होतीं। 4 वर्णों से छोटी values को ढका नहीं जा सकता।जानबूझकर
Run again, failed step से दोहराना, inputs के साथ चलाना
detail के नीचे तीन बटन, जो सब Repeat this run डायलॉग पर ख़त्म होते हैं।
आप कर सकते हैं
- Run again workflow को शुरू से चलाता है।
- Repeat from the failed step पहले fail हुए step से दोबारा चलाता है, उससे पहले के steps के नतीजे दोबारा इस्तेमाल करते हुए (n earlier results are reused.)। यह तभी दिखता है जब run ख़त्म हो चुका हो और उसमें कोई failed step हो।
- Run with these inputs चलाने से पहले inputs फिर से माँगता है।
- पुष्टि से पहले डायलॉग पढ़ें: वह बताता है “It runs the workflow as it is now, not as it was when this run happened.”, उसके बाद workflow बदला गया या नहीं, कौन-से steps अब नहीं हैं, कौन-से जुड़े हैं और वह कहाँ से दोबारा शुरू होता है।
आप नहीं कर सकते, और क्यों
- पुराने run के inputs दोबारा इस्तेमाल करना: “The inputs of that run are not saved, so the declared defaults are used.” वे tokens हो सकते हैं।जानबूझकर
- किसी block के अंदर nested step से फिर शुरू करना: सिर्फ़ पहले स्तर का step restart बिंदु हो सकता है।जानबूझकर
- ऐसे run को दोहराना जिसका workflow आपने मिटा दिया: “The workflow no longer exists: this run cannot be repeated.”जानबूझकर
Run notifications
जो run ज़िंदा है वह Step n of m और Stop बटन के साथ एक स्थायी notification दिखाता है। runs चलते समय PocketCode special-use प्रकार की एक foreground service रखता है, ताकि Android ऐप को बीच में न रोके।
आप कर सकते हैं
- notification shade से run को देखें और वहीं से रोकें; stop बटन सिर्फ़ इस ऐप के चल रहे runs तक पहुँचता है।
- Show notification step से अपनी notification भेजें। उसकी importance channel तय करती है:
HIGHWorkflows · alerts में जाता है, बाकी सब चुप रहने वाले Workflows channel में। दोनों ऐप की notification settings को मानते हैं: global स्विच, alerts और notices के स्विच, Android की notification permission और quiet hours। - notification को टैप करें:
pocketcode://workflows/…का link run या workflow खोलता है; कोई भी दूसरा link छोड़ दिया जाता है और notification बस ऐप खोल देती है।
आप नहीं कर सकते, और क्यों
- run के fail होने पर अपने-आप notification पाना: PocketCode कोई नहीं भेजता। अगर चाहिए तो Try / on failure branch में Show notification step जोड़ें, या An error was detected से शुरू होने वाला workflow बनाएँ। (AI चैट Try it बटन के साथ Workflow '…' failed सूचना दिखा सकता है, पर सिर्फ़ चैट के अंदर।)अभी नहीं
- हर run के लिए progress notification पाना: सिर्फ़ पहले 5 एक साथ चलने वाले runs को मिलती है; बाकी उसके बिना चलते हैं।डिवाइस
- ऐप के background में होने पर foreground service पर निर्भर रहना: Android 12 से सिस्टम उसे मना कर सकता है (जैसे जेब में रखे फ़ोन पर scheduled run के लिए)। run चलता रहता है, उस सुरक्षा के बिना, और PocketCode हर 30 सेकंड में फिर माँगता है।Google Play
Shortcut, Quick Settings tile और Share
मॉड्यूल खोले बिना workflow शुरू करने के तीन तरीके। हर एक के लिए workflow में उससे मेल खाता trigger चाहिए (Home screen shortcut, Quick settings tile, Text shared to PocketCode या File shared to PocketCode), और workflow चालू होना चाहिए।
आप कर सकते हैं
- Shortcut: shortcut trigger वाला हर चालू workflow ऐप आइकन के dynamic shortcut के रूप में दिखता है (लेबल 30 वर्णों पर कट जाता है)। उसे टैप करने से workflow बिना कुछ खोले चलता है और Workflow started दिखता है। मिटाए गए या बंद किए गए workflow का pinned shortcut यही बताता है।
- Tile: Run a workflow को Quick Settings में खींचें। कोई workflow इसे इस्तेमाल न करे तो यह No workflow uses this tile कहता है; एक हो तो उसे चलाता है; कई हों तो picker दिखाता है।
- Share: किसी दूसरे ऐप से Run a workflow को टेक्स्ट, इमेज, JSON, XML, zip, PDF या कोई सामान्य binary फ़ाइल share करें। Send to a workflow शीर्षक वाली शीट हमेशा दिखाती है कि क्या मिला (“What was shared is data, not an instruction.”) और कौन-सा workflow उसे पाता है; कई हों तो आप एक चुनते हैं। data
{{trigger.text}},{{trigger.subject}},{{trigger.uri}},{{trigger.fileName}},{{trigger.mimeType}}के रूप में आता है, और उसी नाम का घोषित input जीतता है। - अगर कोई नहीं सुन रहा तो आप पढ़ते हैं “No active workflow is listening for this. Add the matching trigger in the workflow editor.”
आप नहीं कर सकते, और क्यों
- इन तीनों से ऐसा workflow शुरू करना जिसके ज़रूरी input का default नहीं है: यह अंधाधुंध चलने के बजाय … needs a value first कहता है।जानबूझकर
- एक साथ कई items share करना, 32 768 वर्णों से लंबा टेक्स्ट (वह काट दिया जाता है और आपको बताया जाता है), या 25 MB से बड़ी फ़ाइल। share की गई फ़ाइल PocketCode में कॉपी होती है और 24 घंटे बाद मिटा दी जाती है; स्वीकार किए जाने वाले types की सूची तय है, कोई भी type नहीं।जानबूझकर
- shortcuts की संख्या पर भरोसा करना: launcher कितने दिखाता है, यह Android तय करता है (कम से कम 5, आमतौर पर 4 या 5), और tile opt-in है, आपको उसे ख़ुद खींचकर लगाना पड़ता है।डिवाइस
- किसी दूसरे ऐप से
.pcwf.jsonसीधे खोलना: Share मेनू फ़ाइल को File shared to PocketCode trigger को भेजता है, importer को नहीं। Import a workflow from a file से import करें।जानबूझकर
Scheduling
कोई भी workflow कई schedules रख सकता है, जो घड़ी आइकन या उसके मेनू में Schedule से सेट होते हैं (Schedules for …)। वे Android के WorkManager से चलते हैं, उससे जुड़ी ढील के साथ, और ऐप शुरू होने पर फिर से लगाए जाते हैं।
आप कर सकते हैं
- मौजूदा schedules पढ़ें (Every n min या Cron: …, Next: …, उनकी conditions, अंतराल बढ़ाए जाने पर सूचना, Recovers one missed run) और किसी को भी Remove करें।
- preset से या Custom cron से एक जोड़ें: पाँच fields,
min hour day month weekday, जैसे0 9 * * 1। शीट Next fire: … या Invalid cron expression दिखाती है, और Add cron उसे सेव करता है। Cron*, संख्याएँ, सूचियाँ, ranges,*/n, नाम (SUN–SAT,JAN–DEC) स्वीकार करता है, और अंत के पार लौटने वाली ranges सिर्फ़ month और weekday में चलती हैं; weekday 0 से 6 तक जाता है, 7 का मतलब रविवार। - बनाने से पहले Device conditions चुनें: No requirement, Any connection या Wi-Fi only, साथ में Only while charging, Not on low battery और Only while the device is idle। condition run को टालती है, रद्द नहीं करती: जब condition आख़िरकार पूरी होती है तो लंबित run आगे बढ़ता है, घंटों बाद भी।
- If a run is missed के नीचे Run it once when the device comes back चालू करें: डिवाइस बंद रहने के दौरान छूटा run ऐप के अगले start पर एक बार चलता है (15 मिनट की सहनशीलता के साथ), चाहे कितने भी छूटे हों। यह default रूप से बंद है, इसलिए छूटा हुआ run छोड़ दिया जाता है।
- घंटे के बदलाव पर भरोसा करें: वसंत में जो घंटा नहीं होता वह उस छलाँग पर fire होता है, और पतझड़ में जो घंटा दो बार आता है वह एक बार fire होता है (बारीक cron उस घंटे का दूसरा चक्कर खो देता है)।
- retries पर भरोसा करें: fail हुआ scheduled run WorkManager के exponential back-off के साथ कुल 4 बार तक आज़माया जाता है (पहला run और 3 retries)। अगर अगला run देय होने पर कोई run चल ही रहा हो तो concurrency नीति तय करती है; Skip the new one के साथ run cancelled दर्ज होता है, the previous run was still going।
- tabs के ऊपर बैनर Scheduled workflows need attention पढ़ें: यह तब दिखता है जब PocketCode की notifications बंद हों, Workflows · alerts channel blocked हो, या ऐप battery optimisation के अधीन हो (“Android may delay scheduled runs. It does not cancel them, they go out later.”)। इसमें Open settings है और dismiss बटन नहीं; कारण हटने पर यह हट जाता है।
आप नहीं कर सकते, और क्यों
- 15 मिनट से कम की गारंटी पाना: Android scheduled काम को हर 15 मिनट से ज़्यादा बार नहीं चलाता। उससे कम का अंतराल 15 तक बढ़ा दिया जाता है और शीट यह बताती है (“Asks for every n min, but it runs every 15 min: that is the floor Android allows.”); उससे कम का cron “Android does not guarantee that rate in the background” पाता है। PocketCode न exact-alarm permission माँगता है, न battery optimisation से छूट।Google Play
- अपना अंतराल टाइप करना: presets के रूप में सिर्फ़ तीन अंतराल मिलते हैं (हर 15 मिनट, हर घंटे, हर 6 घंटे); कोई भी और लय cron expression है। अंतराल लगभग 30 दिन से लंबा नहीं हो सकता।जानबूझकर
- time zone चुनना: कोई selector नहीं है, और नया schedule अपना cron डिवाइस के zone में पढ़ता है (हर schedule एक zone रखता है, पर स्क्रीन उसे दिखाती नहीं)।अभी नहीं
- schedule या उसकी conditions को संपादित करना: उसे हटाएँ और दूसरा जोड़ें।जानबूझकर
- cron expression में
?,L,#, range पर step (1-9/2) या year field इस्तेमाल करना। जो cron कभी fire नहीं होता (जैसे फ़रवरी की 31 तारीख़) वह schedule को बंद कर देता है।जानबूझकर - निर्माताओं के battery killers के बारे में बैनर से बताया जाना: वह सिर्फ़ वही कहता है जो Android जवाब देता है (notifications बंद, channel blocked, battery optimisation)।डिवाइस
Presets
| Preset | यह क्या जोड़ता है |
|---|---|
| Every 15 minutes | 15 मिनट का अंतराल, Android की निचली सीमा। |
| Every hour | 60 मिनट का अंतराल। |
| Every 6 hours | 6 घंटे का अंतराल। |
| Daily at 9:00 | cron 0 9 * * *। |
| Mondays at 9:00 | cron 0 9 * * 1। |
Secrets
Manage secrets (सूची का key आइकन) बिना values वाले नामों की एक सूची है। आप किसी भी parameter में उसे {{secret.NAME}} के रूप में refer करते हैं, ताकि token को कभी workflow में टाइप न करना पड़े, जहाँ वह जस का तस सेव होता, export करने पर साथ जाता और run history में दिख जाता।
आप कर सकते हैं
- Add a secret: बड़े अक्षरों, अंकों और underscore में एक Name (अगर नाम expression में इस्तेमाल नहीं हो सकता तो स्क्रीन एक सुझाती है, Use …), और एक Value। steps यही नाम इस्तेमाल करते हैं, इसलिए इसे बाद में बदलने से वे टूट जाते हैं।
- Change value: जो workflows उसे इस्तेमाल करते हैं वे अपने अगले run पर नई value उठा लेते हैं।
- Delete: एक डायलॉग उन workflows की सूची देता है जो उसे refer करते हैं और चेतावनी देता है कि value वापस नहीं मिल सकती और जिस workflow का secret छिन जाए वह सेव करते समय fail नहीं होता, बल्कि अपने अगले run पर ख़ाली value भेजते हुए fail होता है।
- पढ़ें “Stored encrypted on this device, one set per account. Values are never shown again, not even here.”
आप नहीं कर सकते, और क्यों
- सेव करने के बाद value को दोबारा देखना, या ख़ाली value सेव करना (“An empty value is not saved. To remove a secret, delete it.”)।जानबूझकर
- 4 वर्णों से छोटी value को run history में ढका हुआ पाना: वह सेव हो जाती है, पर स्क्रीन चेतावनी देती है “Careful: this value is shorter than 4 characters, so it will NOT be masked” और उसे print करने वाला step उसे वहाँ पढ़ने लायक छोड़ देता है।जानबूझकर
- फ़ोन restore करने या screen lock बदलने के बाद store खोलना: “The encrypted store could not be opened on this device… Nothing has been deleted. This usually happens after restoring the phone or changing the screen lock.”डिवाइस
- devices के बीच secrets sync करना: वे upload होने वाली चीज़ से हटा दिए जाते हैं, और export की गई फ़ाइल में भी साथ नहीं जाते।जानबूझकर
Export, import और links
Workflow एक .pcwf.json फ़ाइल के रूप में चलता है। Export और import जानबूझकर मुफ़्त हैं, और code बताता है क्यों: ये आपके काम को ऐप से बाहर ले जाने का एकमात्र रास्ता हैं, और अपना data वापस पाने का तरीका subscription के पीछे बंद कर देना plan को ताले में बदल देगा।
आप कर सकते हैं
- कार्ड के मेनू में Share as file Share this workflow खोलता है: फ़ाइल का नाम, कौन-से secret fields ख़ाली किए जाते हैं (Your secrets stay on this device), और यह याद दिलाना कि run history, pinned outputs और on/off स्विच साथ नहीं जाते। Share Android का app picker खोलता है।
- Import a workflow from a file (सूची का ऊपरी बटन) सिस्टम का file picker खोलता है। Import workflow शीट नाम, Runs when, 40 तक steps, secrets के लिए You will have to fill these in, और linter का नतीजा दिखाती है; error हो तो Save रुक जाता है। “It will be saved switched off. Read it before you turn it on: a workflow can run commands on your device.”
- किसी दूसरे ऐप से link
pocketcode://workflows/import?url=https://…खोलें: A link wants to import a workflow पता (From: …) और एक चेतावनी दिखाता है, और जब तक आप Download (या No thanks) नहीं दबाते, कुछ डाउनलोड नहीं होता।
आप नहीं कर सकते, और क्यों
- file manager या किसी दूसरे ऐप से
.pcwf.jsonसीधे खोलना: ऐप में उसके लिए कोई file filter नहीं है। Import a workflow from a file या link इस्तेमाल करें।जानबूझकर - 512 KB से बड़ी फ़ाइल, जो PocketCode workflow नहीं है ऐसी फ़ाइल, ख़राब फ़ाइल, या PocketCode के नए वर्ज़न की लिखी फ़ाइल import करना: हर एक का अपना संदेश आता है।जानबूझकर
- ऐसा link इस्तेमाल करना जो
httpsनहीं है, 2 048 वर्णों से लंबा है, पते में credentials रखता है या डिवाइस को ही इंगित करता है; redirect दिखाया जाता है, पर follow नहीं किया जाता।जानबूझकर - फ़ाइल को जाँचे बिना share करना: सिर्फ़ secrets घोषित parameters ख़ाली किए जाते हैं; HTTP headers और commands ठीक वैसे ही जाते हैं जैसे आपने टाइप किए, इसलिए अगर किसी field में key या token है तो share करने से पहले फ़ाइल जाँच लें।जानबूझकर
फ़ाइल में क्या है
| साथ जाता है | नाम, विवरण, triggers, steps, inputs और run settings (permissions और tags समेत)। |
| साथ नहीं जाता | id, तारीख़ें, आख़िरी run की स्थिति, वह template जिससे वह आया, on/off स्विच, Available to AI agent, pinned outputs, history और schedules। |
| Secrets | secrets घोषित parameters ख़ाली किए जाते हैं और सूचीबद्ध होते हैं। {{secret.NAME}} reference साथ जाता है: वह एक नाम है, secret नहीं। |
| पहुँचने पर | बंद अवस्था में और नई id के साथ, linter चलने के बाद। नए build की कोई नई action अकेली हटा दी जाती है; नए format वाली फ़ाइल पूरी अस्वीकार की जाती है। |
AI: generate, बदलाव और चैट
AI workflows को तीन जगह छूता है: इस मॉड्यूल का generator और बदलाव की शीट (मुफ़्त), चैट एजेंट जो उन्हें पढ़ सकता है, चला सकता है और Pro के साथ लिख भी सकता है, और किसी run के Analyse with AI बटन।
Generate from prompt और Change with AI
दोनों मॉड्यूल में ही हैं और किसी में plan की जाँच नहीं है। model वही AI provider है जो आपने Settings में कॉन्फ़िगर किया, आपकी अपनी key के साथ।
आप कर सकते हैं
- welcome स्क्रीन (portrait) पर Generate from prompt टैप करके Generate workflow from prompt खोलें: Prompt लिखें, trigger (push, save, commit, error, deploy) और actions (deploy, notify, backup, test, format) का ज़िक्र करते हुए, और Generate दबाएँ।
- कार्ड के मेनू में Change with AI टैप करके Change “…” with AI खोलें: बताएँ कि क्या बदलना है; workflow का बाकी हिस्सा जैसा है वैसा रहता है और सेव करने से पहले आप देखते हैं कि क्या बदला।
- नतीजा जाँचें: preview, Checks (linter की समस्याएँ), Dry run passed in n ms, Dry run failed: … या “Not tested: … You can test it yourself from the editor.”, ऐप ने जो ठीक किया उसके लिए Adjusted automatically, और बदलाव के समय diff (added, removed, changed, n steps unchanged)।
- Save & enable (सिर्फ़ बनाते समय), Open in editor (जब checks सेव रोकें तब का रास्ता) या Discard चुनें। इस तरह बना workflow चालू अवस्था में सेव होता है; बदलाव workflow की id, उसकी on/off स्थिति और बनने की तारीख़ को बनाए रखता है।
आप नहीं कर सकते, और क्यों
- AI द्वारा बनाई हर चीज़ पर dry run की उम्मीद करना: वह तभी चलता है जब ऐप उसे सुरक्षित समझे, क्योंकि dry run steps को चलाता है। जब कोई step simulate नहीं हो सकता, waits का कुल 10 सेकंड से ज़्यादा है, कोई wait किसी event का है या कोई subflow जाँचा नहीं जा सकता, तो वह Not tested कहता है और कारण देता है।जानबूझकर
- AI provider के बिना model से लिखा workflow पाना: key सेट न हो तो ऐप keyword matching पर लौट आता है और कहता है “Built without a model: no AI key is set, so this came from keyword matching.”नेटवर्क ज़रूरी
- linter द्वारा अस्वीकार किया गया generated workflow सेव करना: “Fix these before saving: this workflow is not ready.”जानबूझकर
चैट एजेंट और workflows
दो अलग चीज़ें। जिस workflow को आप Available to AI agent चिह्नित करते हैं और चालू रखते हैं, वह चैट को उसके अपने tool के रूप में घोषित होता है, workflow__<name>__<id के आख़िरी 6 वर्ण>, जिसका विवरण उसके steps से बनता है (irreversible वालों के बारे में वह चेतावनी देता है) और input schema उसके घोषित inputs से बनता है। और छह management tools हमेशा मौजूद रहते हैं, exposed workflows हों या न हों।
| Tool | यह क्या करता है | Plan |
|---|---|---|
workflow__list | आपके workflows की सूची देता है (25 तक) triggers, enabled हैं या नहीं, और आख़िरी run कैसा रहा के साथ; यह filter कर सकता है। | Free |
workflow__get | एक workflow पूरा लौटाता है। Secret parameters [secret, not shown] के रूप में दिखते हैं। 20 000 वर्णों से लंबा workflow अस्वीकार होता है, काटा नहीं जाता। | Free |
workflow__runs | एक workflow की history, सबसे नया पहले (default 5, 20 तक), आख़िरी error और 5 तक failed steps के साथ। | Free |
workflow__run | अभी workflow चलाता है। बंद workflow को मना करता है, inputs जाँचता है और irreversible-steps की अनुमति का सम्मान करता है। | Free |
workflow__create | एक document से workflow बनाता है। पहले उसकी जाँच होती है, और model के चालू माँगने पर भी वह बंद अवस्था में बनता है। | Pro |
workflow__update | मौजूदा workflow के fields बदलता है। | Pro |
आप कर सकते हैं
- एजेंट से पूछें कि push करने पर कौन-से workflows चलते हैं, या पिछली रात का backup क्यों fail हुआ: वह
workflow__list,workflow__getऔरworkflow__runsसे पढ़ता है, जो मुफ़्त हैं। - उससे
workflow__runसे कोई चलवाएँ: वह inputs को workflow के घोषित inputs से जाँचता है, और आपकी दी हुई irreversible-steps की अनुमति (Allow the AI) का सम्मान करता है। - Pro के साथ, उससे कोई बनवाएँ या बदलवाएँ:
workflow__createऔरworkflow__update। लिखने वाले तीनों tools एजेंट की पुष्टि वाली शीट से गुज़रते हैं।
आप नहीं कर सकते, और क्यों
- Free पर चैट से workflows बनाना या बदलना: model को एक इनकार मिलता है जो कहता है कि आपको बताए, और आपको एक सूचना दिखती है (“… needs PocketCode Pro, so that action did not run.”) Upgrade बटन के साथ। plan की इस सुविधा का नाम Workflows from the chat है।Pro
- एजेंट से workflow के retry, timeouts, When condition या retention को बदलवाना: AI इन्हें सेट नहीं कर सकता, और update steps की ids, permissions, tags और retention बनाए रखता है।जानबूझकर
- Available to AI agent को access control की तरह इस्तेमाल करना: यह सिर्फ़ यह तय करता है कि workflow अपने tool के रूप में घोषित हो या नहीं।
workflow__runहर चालू workflow को नाम से चला सकता है।जानबूझकर
Marketplace
Marketplace में Workflows asset type है, पर आज उससे workflow install नहीं किया जा सकता, और ऐप में एक को publish करने का कोई तरीका नहीं है। workflow share करने के लिए फ़ाइल या link इस्तेमाल करें (देखें Export, import और links)।
आप कर सकते हैं
- Marketplace को Workflows प्रकार से फ़िल्टर करें और उस प्रकार के asset का पेज पढ़ें।
- Share as file से अपना workflow share करें, या
.pcwf.jsonको किसी https पते पर रखें औरpocketcode://workflows/import?url=…link भेजें।
आप नहीं कर सकते, और क्यों
- Marketplace से workflow install करना: workflow asset के पेज पर install बटन disabled है (Requires WASM runtime), plugin की तरह ही, भले ही engine पहले से जानता है कि एक को कैसे जाँचना और install करना है।अभी नहीं
- Marketplace पर workflow publish करना: कोई बटन नहीं है और ऐप कुछ upload नहीं कर सकता। कैटलॉग टीम एक pull request से publish करती है जिसे CI जाँचता और sign करता है।जानबूझकर
Free और Pro
Engine मुफ़्त है। जिसके पैसे लगते हैं वह सीमित है, और हर चीज़ ऐसी सीमा है जिस तक आप इस मॉड्यूल के बाहर से पहुँच सकते हैं। कीमतें प्लान और मूल्य में हैं।
| सुविधा | Free | Pro |
|---|---|---|
| 25 triggers, 15 actions, सात तरह के steps, templates, एडिटर, linter और step tests | हाँ | हाँ |
| Scheduling (WorkManager, cron, device conditions, छूटे run की भरपाई) | हाँ | हाँ |
Encrypted secrets, हर workflow की permissions, history और Activity, .pcwf.json का export और import | हाँ | हाँ |
Available to AI agent, और चैट का आपके workflows चलाना (workflow__run, workflow__list, workflow__get, workflow__runs) | हाँ | हाँ |
| इस मॉड्यूल में Generate from prompt और Change with AI | हाँ, आपके अपने AI provider के साथ | हाँ, आपके अपने AI provider के साथ |
AI चैट का workflows बनाना या बदलना (workflow__create, workflow__update) | नहीं: model को इनकार मिलता है और आपको Upgrade वाली सूचना दिखती है | हाँ (Workflows from the chat) |
| उसी प्रोजेक्ट का deploy चलते समय Trigger deploy step (queued, building या deploying) | नहीं: हर प्रोजेक्ट पर 1 चल रहा (“Upgrade required to trigger another active deploy”) | हाँ, कोई सीमा नहीं |
| आपके devices के बीच workflow definitions का sync (Cloud Sync, Workflows group) | नहीं | हाँ |
कीबोर्ड शॉर्टकट
ये तभी चलते हैं जब एडिटर खुला हो और hardware कीबोर्ड हो। इन्हें Settings में बदला जा सकता है।
| कुंजी | यह क्या करती है |
|---|---|
Ctrl+S | सेव। |
Ctrl+Z / Ctrl+Shift+Z | Undo / Redo। |
Ctrl+Enter | Test now: workflow का dry run। |
Ctrl+D | चुने हुए step की प्रति (IntelliJ preset में Ctrl+Shift+D)। |
Delete | चुना हुआ step मिटाएँ। |
Ctrl+↑ / Ctrl+↓ | चुने हुए step को ऊपर या नीचे ले जाएँ (Atom preset में Ctrl+Alt+↑ / Ctrl+Alt+↓)। |
आख़िरी चार चुने हुए step पर काम करते हैं: उसे चुनने के लिए कार्ड का पेंसिल आइकन टैप करें।
प्राइवेसी और सुरक्षा
Workflows आपके डिवाइस पर चलते हैं; जो उससे बाहर जाता है वह वही है जिसकी ओर आप किसी step को इंगित करते हैं।
- यह कहाँ सेव होता है। Definitions डिवाइस पर एक स्थानीय database में रहती हैं, हर account के लिए एक फ़ाइल। Pro के साथ, Cloud Sync आपके devices के बीच definitions कॉपी कर सकता है (Workflows group); runs, schedules, pinned outputs और secrets कभी sync नहीं होते।
- Secrets। वे डिवाइस पर encrypted रखे जाते हैं, हर account के लिए एक सेट (Android Keystore key, AES-256-GCM), दोबारा कभी नहीं दिखते, dry run में resolve नहीं होते, export की गई फ़ाइल में साथ नहीं जाते और run को history में लिखते समय
•••से ढक दिए जाते हैं (4 वर्णों से छोटी value को ढका नहीं जा सकता)। - Irreversible-steps की अनुमति। Enable anyway और Allow the AI का जवाब सिर्फ़ डिवाइस पर याद रखा जाता है, हर workflow के लिए एक बार।
- Workflow क्या कर सकता है। Workflow उन permissions के साथ commands चला सकता है और फ़ाइलें लिख सकता है जो आपने खुली छोड़ी हैं; permissions sandbox नहीं हैं, और domain सूची AI, deploy या git step को नहीं रोकती।
- डिवाइस से क्या बाहर जाता है। HTTP request, Trigger deploy, Git operation (push और pull) और AI steps उन services या पतों तक जाते हैं जो आपने कॉन्फ़िगर किए या लिखे। AI step अपना prompt और context आपके अपने key के साथ आपके provider को भेजता है।
- Imports। फ़ाइल या link हमेशा बंद अवस्था में preview और linter के नतीजे के साथ आता है; link
httpsहोना चाहिए, credentials नहीं रख सकता या डिवाइस को इंगित नहीं कर सकता, redirects को follow नहीं करता और जब तक आप Download नहीं दबाते कुछ डाउनलोड नहीं करता। - दूसरे ऐप आपको क्या भेजते हैं। Share किया गया टेक्स्ट और फ़ाइलें data के रूप में आती हैं, कभी निर्देश के रूप में नहीं, और ऐप हमेशा दिखाता है कि क्या मिला और कौन-सा workflow उसे पाता है।
- Exports। सिर्फ़ secrets घोषित parameters ख़ाली किए जाते हैं; HTTP headers और commands वैसे ही जाते हैं जैसे आपने टाइप किए। share करने से पहले फ़ाइल जाँच लें।
सीमाएँ
सबसे अहम सीमाएँ, हर एक अपने कारण के साथ। किसी स्क्रीन की ख़ास सीमाएँ उसी स्क्रीन के खंड में हैं।
- चैट Free पर workflows नहीं बना या बदल सकता, और उस प्रोजेक्ट का deploy पहले से चल रहा हो तो Trigger deploy step Free पर fail होता है।Pro
- Definitions devices के बीच सिर्फ़ Pro के साथ sync होती हैं (Cloud Sync)।Pro
- Scheduled runs WorkManager से चलते हैं: हर 15 मिनट से ज़्यादा बार नहीं, कोई exact alarms नहीं, और Doze या battery saving उन्हें टाल सकते हैं (रद्द कभी नहीं करते)।Google Play
- Background में runs foreground service पर निर्भर हैं; Android 12 से ऐप के background में होने पर सिस्टम उसे मना कर सकता है, और तब run उस सुरक्षा के बिना चलता रहता है।Google Play
- सिर्फ़ पहले 5 एक साथ चलने वाले runs को progress notification मिलती है; quick tile opt-in है और launcher कितने shortcuts दिखाता है यह Android तय करता है।डिवाइस
- फ़ोन restore करने या screen lock बदलने के बाद secrets store शायद न खुले; कुछ नहीं मिटता।डिवाइस
- Project closed और The AI finished its turn कभी fire नहीं होते: ऐप में कुछ भी उन्हें emit नहीं करता।अभी नहीं
- On git commit सिर्फ़ Projects से किए गए commits पर fire होता है, एडिटर के Source Control पैनल या AI चैट के commits पर नहीं।अभी नहीं
- Schedules में time zone selector नहीं है, और run के fail होने पर कोई स्वचालित notification नहीं है।अभी नहीं
- Workflows Marketplace से install नहीं किए जा सकते, और ऐप एक को publish नहीं कर सकता।अभी नहीं
- जो run सिस्टम के ऐप को मार देने के समय चल रहा था वह history में कोई पंक्ति नहीं छोड़ता, और ख़त्म हुए run का shell log रखा नहीं जाता।जानबूझकर
- कोई graph canvas, N-way switch या मुक्त merge नहीं, schedule संपादित नहीं हो सकता, cron में
?,L,#नहीं, और presets के रूप में सिर्फ़ तीन अंतराल।जानबूझकर - हर workflow में 6 तक triggers, हर filter में 8 conditions, हर workflow में 8 tags, import preview में 40 steps की सूची और 512 KB की फ़ाइल।जानबूझकर
- Engine की सीमाएँ: पूरे ऐप में एक बार में 8 runs, 16 तक 120 सेकंड तक प्रतीक्षा में, हर workflow के 10 queued event runs, 10 000 iterations तक और एक साथ 16 तक के loops, 5 स्तर गहरे subflows, किसी event के लिए Wait का default 5 मिनट, और Try / on failure के error संदेश की सीमा 4 096 वर्ण।जानबूझकर
- Step outputs: HTTP response body 128 KiB तक, shell का output 64 KB तक, फ़ाइल पढ़ना 128 KiB तक, और हर step history में अधिकतम 32 KiB output रखता है।जानबूझकर
- Activity स्क्रीन सबसे नए 500 runs तक दिखाती है; हर workflow के लिए आपकी रखी history 1 से 1 000 runs और 1 से 365 दिन की है।जानबूझकर
- Deploys सिर्फ़
render,netlify,digitaloceanऔरrailwayपर जाते हैं, और Query databaseneon,supabase,turso,upstash,cloudflare(D1) और आपके सहेजे हुए remote PostgreSQL connections तक पहुँचता है।थर्ड पार्टी - Generate from prompt और Change with AI के लिए key वाला AI provider चाहिए; उसके बिना वे keyword matching पर लौट आते हैं।नेटवर्क ज़रूरी
समस्या निवारण
ऐप के असली संदेश, और उनका मतलब।
Nothing in the app emits PROJECT_CLOSED yet, so this workflow will not fire.
trigger dropdown में है पर कुछ भी उसे emit नहीं करता। कोई दूसरा trigger चुनें: Project closed और The AI finished its turn कभी fire नहीं होते।
No condition: this trigger fires with every event of its type.
यह error नहीं है: trigger पर कोई filter नहीं है। अगर सिर्फ़ कुछ events चाहिए तो condition जोड़ें।
जो workflow मैंने चालू किया वह कभी नहीं चलता
जाँचें कि Enabled चालू है, कि उसके trigger का सचमुच कोई emitter और मेल खाता filter है, कि किसी दूसरे run के चलते समय वह Skip the new one से छोड़ा तो नहीं जा रहा, और कि ज़रूरी inputs के defaults हैं (event, schedule या shortcut के पास पूछने के लिए कोई नहीं होता)।
No active workflow is listening for this. Add the matching trigger in the workflow editor.
आपने PocketCode को कुछ share किया और किसी चालू workflow में Text shared to PocketCode या File shared to PocketCode नहीं है। trigger जोड़ें और workflow को चालू करें।
… needs a value first
किसी shortcut, tile या share ने ऐसे workflow को शुरू करने की कोशिश की जिसके ज़रूरी input का default नहीं है। input को default दें, या उसे मॉड्यूल से चलाएँ।
Required with no default: … A scheduled run cannot start — the scheduler has nobody to ask.
schedule आपसे inputs नहीं पूछ सकता। हर ज़रूरी input को एक default value दें।
Invalid cron expression
cron में पाँच fields होते हैं: min hour day month weekday। ?, L, #, range पर step और year field स्वीकार नहीं किए जाते।
Asks for every 5 min, but it runs every 15 min: that is the floor Android allows.
15 मिनट से कम का अंतराल 15 तक बढ़ा दिया जाता है। उस दर से कम का cron “Android does not guarantee that rate in the background” पाता है।
Scheduled workflows need attention
बैनर वह बताता है जो Android ने जवाब दिया: Notifications are off for PocketCode, “The ‘Workflows · alerts’ channel is blocked”, या “PocketCode is subject to battery optimisation”। Open settings टैप करें। बैनर को हटाया नहीं जा सकता; कारण हटने पर वह हट जाता है।
permiso denegado (…): … Se cambia en «Permisos», dentro de los ajustes del workflow.
workflow की permissions ने किसी step को मना कर दिया (यह संदेश हर भाषा में स्पेनिश में आता है)। Workflow settings और Permissions खोलें और नेटवर्क, लिखना या commands खोलें, या domain जोड़ें।
Upgrade required to trigger another active deploy
Free पर Trigger deploy step तब fail होता है जब उसी प्रोजेक्ट का deploy अभी भी चल रहा हो (queued, building या deploying); सीमा 1 है। उसके ख़त्म होने का इंतज़ार करें, या Pro लें।
la consulta modifica datos (…) y el paso no tiene «allowWrites» activado
किसी Query database step में write क्रियाएँ हैं और allowWrites बंद है (यह संदेश हर भाषा में स्पेनिश में आता है)। allowWrites तभी चालू करें जब आप सचमुच यही चाहते हों।
That is not a PocketCode workflow file. Pick a .pcwf.json file.
फ़ाइल workflow नहीं है। बाकी दो संदेश हैं “This is a workflow file, but it is damaged and cannot be read.” और “This file was written by a newer version of PocketCode (format …). Update the app to open it.”
That address sends you somewhere else: … It was not followed — confirm the new address only if you trust it.
किसी import link ने दूसरे पते पर redirect किया। नया पता तभी confirm करें जब आप उस पर भरोसा करें।
The encrypted store could not be opened on this device
फ़ोन restore करने या screen lock बदलने के बाद secrets store नहीं खुल सकता। कुछ नहीं मिटा है।
Careful: this value is shorter than 4 characters, so it will NOT be masked with ••• in run history. If a step prints it, it stays readable there.
secret सेव हो जाता है, पर अगर कोई step उसे print करे तो वह run history में पढ़ने लायक रहता है। लंबी value इस्तेमाल करें।
The workflow no longer exists: this run cannot be repeated.
workflow मिटा दिया गया था। मिटाए गए workflow के runs Activity में अब भी पढ़े जा सकते हैं, पर दोहराए नहीं जा सकते।
The shell log is not kept in the history: it is only visible while the run is going.
run चलते समय Live output से log देखें, या जो चाहिए उसे किसी step से फ़ाइल में लिख लें।
Fix these before saving: this workflow is not ready.
generator की जाँचों को एक error मिला। workflow को Open in editor से एडिटर में खोलें और Problems में जो सूचीबद्ध है उसे ठीक करें।
Not tested: … You can test it yourself from the editor.
generator ने workflow का dry run नहीं किया क्योंकि dry run steps को चलाता है और वह किसी step के बारे में निश्चित नहीं हो सका: ऐसा step जिसे simulate नहीं किया जा सकता (deploy), कुल 10 सेकंड से ज़्यादा के wait, किसी event का इंतज़ार, या ऐसा subflow जिसके अंदर वह नहीं देख सकता। इसे एडिटर से टेस्ट करें।