From 2162f52e00e3e23e81252b1672a0a74a6736c072 Mon Sep 17 00:00:00 2001 From: rafi993 Date: Fri, 8 Nov 2019 16:36:55 +0530 Subject: [PATCH 01/18] Checking if seciton is valid --- layouts/default.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/layouts/default.vue b/layouts/default.vue index 97062fd57..bba31372b 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -259,6 +259,7 @@ let section = document.querySelector(link.hash); if ( + section && section.offsetTop <= fromTop && section.offsetTop + section.offsetHeight > fromTop ) { From aae182a9f88848e1eb363edbddcc016d226152e3 Mon Sep 17 00:00:00 2001 From: liyasthomas Date: Fri, 8 Nov 2019 22:26:43 +0530 Subject: [PATCH 02/18] :sparkles: Added preRequestScript and request duration to history entry --- components/history.vue | 23 ++++++++++++++++++++++- pages/index.vue | 7 +++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/components/history.vue b/components/history.vue index 96e850ffc..283447aac 100644 --- a/components/history.vue +++ b/components/history.vue @@ -37,6 +37,11 @@ Path +
  • + +
  • {{entry.status}}
  • - +
  • +
  • + +
  • +
  • + +
  • -
  • - -
  • + +
  • +
      +
    • + +
    • +
    • + +
    • +
    +
  • +
  • + -
      +
      • -
      • - -
      • -
      • - -
      • + +
        +
      • + +
      • +
      • + +
      • +
        +
      • - diff --git a/pages/index.vue b/pages/index.vue index eac293148..755d4463e 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -980,7 +980,7 @@ export default { ); const validHostname = new RegExp( protocol + - "(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$" + "(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9/])$" ); return validIP.test(this.url) || validHostname.test(this.url); }, From 6ffbd88d92b33cdc974ca2ce84de091d8597df89 Mon Sep 17 00:00:00 2001 From: liyasthomas Date: Sat, 9 Nov 2019 07:44:22 +0530 Subject: [PATCH 09/18] :pencil2: Updated meta --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e90d93fb5..c715cb2d0 100644 --- a/README.md +++ b/README.md @@ -23,11 +23,11 @@ --- -**Start here: _[Story behind Postwoman](https://dev.to/liyasthomas/i-created-postwoman-an-online-open-source-api-request-builder-41md), [Postwoman v1.0](https://dev.to/liyasthomas/postwoman-v1-0-a-free-fast-beautiful-alternative-to-postman-mn0)_** +**Read: _[Story behind Postwoman](https://dev.to/liyasthomas/i-created-postwoman-an-online-open-source-api-request-builder-41md), [Postwoman v1.0](https://dev.to/liyasthomas/postwoman-v1-0-a-free-fast-beautiful-alternative-to-postman-mn0)_** -**Chat here: _[Telegram](https://t.me/postwoman_app), [Discord](https://discord.gg/GAMWxmR)_** +**Chat: _[Telegram](https://t.me/postwoman_app), [Discord](https://discord.gg/GAMWxmR)_** -**Donate here: _[PayPal](https://www.paypal.me/liyascthomas), [Open Collective](https://opencollective.com/postwoman), [Patreon](https://www.patreon.com/liyasthomas)_** +**Donate: _[PayPal](https://www.paypal.me/liyascthomas), [Open Collective](https://opencollective.com/postwoman), [Patreon](https://www.patreon.com/liyasthomas)_**

        @@ -64,7 +64,7 @@ _History entries are synced with local session storage_ _Customized themes are also synced with local session storage_ -🔥 **PWA**: Install as a [PWA](https://developers.google.com/web/progressive-web-apps) on your device. +🔥 **PWA**: Install as a [PWA](https://developers.google.com/web/progressive-web-apps) (100/100 Lighthouse score) on your device. **Features:** - Instant loading with [Service Workers](https://developers.google.com/web/fundamentals/primers/service-workers) From c2519bdb7dc8c031cec49d5a8104f80fcfee1dec Mon Sep 17 00:00:00 2001 From: liyasthomas Date: Sat, 9 Nov 2019 12:17:50 +0530 Subject: [PATCH 10/18] :sparkles: Added pw.env.set() for storing environment variables --- functions/preRequest.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/functions/preRequest.js b/functions/preRequest.js index eed6fd828..aa608d01c 100644 --- a/functions/preRequest.js +++ b/functions/preRequest.js @@ -7,6 +7,9 @@ export default function getEnvironmentVariablesFromScript(script) { environment: { set: (key, value) => _variables[key] = value, }, + env: { + set: (key, value) => _variables[key] = value, + }, // globals that the script is allowed to have access to. }; From 1b211873972fd4d554e683b946870d2e501e6961 Mon Sep 17 00:00:00 2001 From: liyasthomas Date: Sat, 9 Nov 2019 14:31:07 +0530 Subject: [PATCH 11/18] :zap: Better History section --- assets/css/styles.scss | 17 +++-- components/history.vue | 161 +++++++++++++++++------------------------ pages/index.vue | 8 +- 3 files changed, 82 insertions(+), 104 deletions(-) diff --git a/assets/css/styles.scss b/assets/css/styles.scss index 0ea7527cc..6d70fe14a 100644 --- a/assets/css/styles.scss +++ b/assets/css/styles.scss @@ -12,16 +12,23 @@ html { ::-webkit-scrollbar { width: 8px; height: 8px; + border-radius: 8px; + background-color: var(--bg-dark-color); + visibility: hidden; + + &:hover { + visibility: visible; + } } ::-webkit-scrollbar-thumb { background-color: var(--fg-light-color); border-radius: 8px; border: 2px solid var(--bg-color); -} -::-webkit-scrollbar-thumb:hover { - background-color: var(--fg-color); + &:hover { + background-color: var(--fg-color); + } } ::placeholder { @@ -658,10 +665,6 @@ ol li { background-color: var(--err-color); } -.virtual-list::-webkit-scrollbar { - width: 0; -} - fieldset#history { .method-list-item { position: relative; diff --git a/components/history.vue b/components/history.vue index 20c280179..e4b34cc62 100644 --- a/components/history.vue +++ b/components/history.vue @@ -2,110 +2,93 @@
        • - +
          -
        • -
        • -
        • + +
        • +
        +
      • +
      • -
      • -
      • +
      • -
      • -
      • +
      • -
      • -
      • +
      • -
      • -
      • +
        • -
        • -
        • +
        • -
      • -
      • - -
      - -
        +
      • - -
      • - + +
      • +
        +
      + +
        +
        +
      • + + +
      • +
        +
      • +
      • - - {{entry.status}} + + {{entry.status}}
      • @@ -125,24 +108,12 @@
      • -
      • -
      • @@ -161,12 +132,7 @@
      • - @@ -201,10 +167,13 @@ } } - .smooth-enter-active, .smooth-leave-active { + .smooth-enter-active, + .smooth-leave-active { transition: all 0.2s; } - .smooth-enter, .smooth-leave-to { + + .smooth-enter, + .smooth-leave-to { opacity: 0; } @@ -213,12 +182,15 @@ min-height: 200px; } } + diff --git a/pages/index.vue b/pages/index.vue index 755d4463e..1791060b6 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -64,7 +64,7 @@ v-model="preRequestScript" v-textarea-auto-height="preRequestScript" spellcheck="false" - placeholder="pw.environment.set('variable', 'value');" + placeholder="pw.env.set('variable', 'value');" >
      @@ -1185,11 +1185,12 @@ export default { behavior: "smooth" }); }, - handleUseHistory({ label, method, url, path, preRequestScript }) { + handleUseHistory({ label, method, url, path, usesScripts, preRequestScript }) { this.label = label; this.method = method; this.url = url; this.path = path; + this.showPreRequestScript = usesScripts; this.preRequestScript = preRequestScript; this.scrollInto("request"); }, @@ -1371,7 +1372,8 @@ export default { method: this.method, url: this.url, path: this.path, - usesScripts: Boolean(this.preRequestScript) + usesScripts: Boolean(this.preRequestScript), + preRequestScript: this.preRequestScript }; this.$refs.historyComponent.addEntry(entry); return; From ca3abed60582b368f8b0d234a22ca0e46ef1f532 Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Sat, 9 Nov 2019 20:43:48 +0530 Subject: [PATCH 12/18] :fire: Better boolean conditions --- assets/css/styles.scss | 2 +- build.js | 2 +- pages/index.vue | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/assets/css/styles.scss b/assets/css/styles.scss index 6d70fe14a..6650bd2af 100644 --- a/assets/css/styles.scss +++ b/assets/css/styles.scss @@ -409,7 +409,7 @@ button { &:not([disabled]):focus { color: var(--act-color); fill: var(--act-color); - box-shadow: 0 0 0 2px var(--fg-color); + box-shadow: inset 0 0 0 2px var(--fg-color); transition: all 0.2s ease-in-out; } diff --git a/build.js b/build.js index b2dd9f89f..22ebe8164 100644 --- a/build.js +++ b/build.js @@ -21,7 +21,7 @@ try { let version = {}; // Get the current version name as the tag from Git. - version.name = process.env.TRAVIS_TAG || runCommand("git", ["tag"]); + version.name = process.env.TRAVIS_TAG || runCommand("git", ["tag --sort=committerdate | tail -1"]); // FALLBACK: If version.name was unset, let's grab it from GitHub. if (!version.name) { diff --git a/pages/index.vue b/pages/index.vue index 1791060b6..075392f48 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -230,7 +230,7 @@ v-tooltip.bottom="{ content: isHidden ? 'Show Code' : 'Hide Code'}" > flash_on - flash_off + flash_off
    @@ -373,7 +373,7 @@ -
      +
      • @@ -586,7 +586,7 @@
        From b193625fb62fc6cee6b9cd2ddcac7b53d8e4c145 Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Sat, 9 Nov 2019 21:10:00 +0530 Subject: [PATCH 13/18] :art: Version and hash on footer --- assets/css/styles.scss | 4 ++++ build.js | 2 +- layouts/default.vue | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/assets/css/styles.scss b/assets/css/styles.scss index 6650bd2af..f288d59c6 100644 --- a/assets/css/styles.scss +++ b/assets/css/styles.scss @@ -690,6 +690,10 @@ fieldset#history { text-align: right; } +.mono { + font-family: 'Roboto Mono', monospace; +} + #response-details-wrapper { position: relative; overflow: hidden; diff --git a/build.js b/build.js index 22ebe8164..80c27f80d 100644 --- a/build.js +++ b/build.js @@ -36,7 +36,7 @@ try { } // Get the current version hash as the short hash from Git. - version.hash = runCommand("git", ["rev-parse", "--short", "HEAD"]); + version.hash = runCommand("git", ["rev-parse --short HEAD"]); // Get the 'variant' name as the branch, if it's not master. version.variant = process.env.TRAVIS_BRANCH || diff --git a/layouts/default.vue b/layouts/default.vue index bba31372b..fd1ad7935 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -131,7 +131,7 @@ -

        +

        Date: Sat, 9 Nov 2019 21:31:20 +0530 Subject: [PATCH 14/18] :alembic: Hid commiit hash and variant from footer --- build.js | 2 +- layouts/default.vue | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build.js b/build.js index 80c27f80d..22ebe8164 100644 --- a/build.js +++ b/build.js @@ -36,7 +36,7 @@ try { } // Get the current version hash as the short hash from Git. - version.hash = runCommand("git", ["rev-parse --short HEAD"]); + version.hash = runCommand("git", ["rev-parse", "--short", "HEAD"]); // Get the 'variant' name as the branch, if it's not master. version.variant = process.env.TRAVIS_BRANCH || diff --git a/layouts/default.vue b/layouts/default.vue index fd1ad7935..e6401b892 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -138,18 +138,18 @@ target="_blank" rel="noopener" >{{version.name}} - + + • - by - Liyas Thomas 🦄 • + + 🦄Subscribe

        From 10b699a6f72604acf55559d6af3ecb2d2bdc6283 Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Sun, 10 Nov 2019 12:08:10 +0530 Subject: [PATCH 15/18] :sparkles: Favorite (star) History entries --- assets/css/styles.scss | 7 +++++-- components/history.vue | 31 ++++++++++++++++++++++++------- pages/index.vue | 3 ++- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/assets/css/styles.scss b/assets/css/styles.scss index f288d59c6..220f9aa08 100644 --- a/assets/css/styles.scss +++ b/assets/css/styles.scss @@ -671,9 +671,12 @@ fieldset#history { span { position: absolute; - top: 12px; - right: 12px; + top: 8px; + right: 8px; font-family: 'Roboto Mono', monospace; + background-color: var(--bg-color); + padding: 4px 8px; + border-radius: 8px; } } } diff --git a/components/history.vue b/components/history.vue index e4b34cc62..8c322d746 100644 --- a/components/history.vue +++ b/components/history.vue @@ -9,7 +9,12 @@
      • +
      • +
      • +
      • @@ -72,11 +77,15 @@
        • - -
        • +
        • +
        • @@ -177,9 +186,13 @@ opacity: 0; } + .stared { + color: #F8E81C !important; + } + @media (max-width: 720px) { .virtual-list.filled { - min-height: 200px; + min-height: 320px; } } @@ -348,8 +361,12 @@ this.history = byDuration; this.reverse_sort_duration = !this.reverse_sort_duration; }, - toggleCollapse: function() { + toggleCollapse() { this.show = !this.show + }, + toggleStar(index) { + this.history[index]["star"] = !this.history[index]["star"]; + updateOnLocalStorage("history", this.history); } } }; diff --git a/pages/index.vue b/pages/index.vue index 075392f48..732b68d16 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1352,7 +1352,8 @@ export default { path: this.path, usesScripts: Boolean(this.preRequestScript), preRequestScript: this.preRequestScript, - duration + duration, + star: false }; this.$refs.historyComponent.addEntry(entry); })(); From 9f0512e81ec756b1fdcfee796798916c87cc2392 Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Sun, 10 Nov 2019 21:49:26 +0530 Subject: [PATCH 16/18] =?UTF-8?q?=F0=9F=93=B1=20Responsive=20History=20sec?= =?UTF-8?q?tion=20for=20mobile=20devices?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/styles.scss | 5 +++++ components/history.vue | 42 +++++++++++++++++++++++++++--------------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/assets/css/styles.scss b/assets/css/styles.scss index 220f9aa08..e88b8fee8 100644 --- a/assets/css/styles.scss +++ b/assets/css/styles.scss @@ -597,6 +597,11 @@ ol { margin: 4px 0 4px; padding: 0; list-style-type: none; + + ul, + ol { + margin: 0; + } } ul li, diff --git a/components/history.vue b/components/history.vue index 8c322d746..8db25ae28 100644 --- a/components/history.vue +++ b/components/history.vue @@ -5,16 +5,16 @@
        -
          +
          • @@ -89,22 +89,26 @@ -
          • - -
          • -
          • - -
          • +
            +
          • + +
          • +
          • + +
          • +
          • {{entry.status}}
          • -
          • - -
          • -
          • - -
          • +
            +
          • + +
          • +
          • + +
          • +
          • @@ -194,6 +198,14 @@ .virtual-list.filled { min-height: 320px; } + + .labels { + display: none; + } + + .entry { + border-bottom: 1px solid var(--brd-color); + } } From 3c2743510bc42328e6c01ed8d606ac88b5d4a782 Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Mon, 11 Nov 2019 19:01:49 +0530 Subject: [PATCH 17/18] :mag: SEO optimizations --- nuxt.config.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nuxt.config.js b/nuxt.config.js index 5a9388e6c..6779a1c12 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -34,7 +34,7 @@ export default { }, { name: 'viewport', - content: 'width=device-width, initial-scale=1, minimum-scale=1, shrink-to-fit=no, minimal-ui' + content: 'width=device-width, initial-scale=1, minimum-scale=1, viewport-fit=cover, minimal-ui' }, { hid: 'description', @@ -59,7 +59,7 @@ export default { }, { itemprop: "image", - content: `${routerBase.router.base}icons/icon-192x192.png` + content: `${routerBase.router.base}logo.png` }, // Add to homescreen for Chrome on Android. Fallback for PWA (handled by nuxt) { @@ -115,7 +115,7 @@ export default { }, { property: 'og:image', - content: `${routerBase.router.base}icons/icon-144x144.png` + content: `${routerBase.router.base}logo.png` }, // Twitter { @@ -136,15 +136,15 @@ export default { }, { name: 'twitter:title', - content: meta.name + content: `${meta.name} \u2022 ${meta.shortDescription}` }, { name: 'twitter:description', - content: meta.shortDescription + content: meta.description }, { name: 'twitter:image', - content: `${routerBase.router.base}icons/icon-144x144.png` + content: `${routerBase.router.base}logo.png` }, ], link: [{ From 4cca931d9dd8ca0a16b02e41ae9acaef40fc8f99 Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Mon, 11 Nov 2019 19:23:35 +0530 Subject: [PATCH 18/18] :mag: SEO optimizations --- nuxt.config.js | 8 ++++---- static/logo.jpg | Bin 0 -> 24338 bytes 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 static/logo.jpg diff --git a/nuxt.config.js b/nuxt.config.js index 6779a1c12..30c451c82 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -59,7 +59,7 @@ export default { }, { itemprop: "image", - content: `${routerBase.router.base}logo.png` + content: `${routerBase.router.base}logo.jpg` }, // Add to homescreen for Chrome on Android. Fallback for PWA (handled by nuxt) { @@ -115,12 +115,12 @@ export default { }, { property: 'og:image', - content: `${routerBase.router.base}logo.png` + content: `${routerBase.router.base}logo.jpg` }, // Twitter { name: 'twitter:card', - content: "summary" + content: "summary_large_image" }, { name: 'twitter:site', @@ -144,7 +144,7 @@ export default { }, { name: 'twitter:image', - content: `${routerBase.router.base}logo.png` + content: `${routerBase.router.base}logo.jpg` }, ], link: [{ diff --git a/static/logo.jpg b/static/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2cee889bb3b6d93426e67890af5a25b6f47f6056 GIT binary patch literal 24338 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

            u7x})n^W+|_N@^Pnxhd(`&x95l?vSpw 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